Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >三大文本处理工具grep、sed及awk

三大文本处理工具grep、sed及awk

作者头像
用户1173509
发布于 2022-05-09 02:06:09
发布于 2022-05-09 02:06:09
72000
代码可运行
举报
文章被收录于专栏:CaiRuiCaiRui
运行总次数:0
代码可运行

一、   用grep在文件中搜索文本

  grep能够接受正则表达式,生成各种格式的输出。除此之外,它还有大量有趣的选项。

1、  搜索包含特定模式的文本行:

2、  从stdin中读取:

3、  单个grep命令可以对多个文件进行搜索:

4、  --color选项在输出行中着重标记出匹配到的单词:

5、  grep中使用正则表达式时使用(grep -E或者egrep)

6、  只输出文件中匹配到的文本部分,可以使用-o:

7、  要显示除匹配行外的所有行用-v选项:

8、  统计文件或文本中包含匹配字符串的行数,-c(在单行出现多个匹配,只匹配一次):

9、  打印出包含匹配字符串的行号,-n:

10、  搜索多个文件并找出匹配文本位于哪一个文件,-l(-L与之作用相反):

11、  递归搜素文件,-r(-R与之作用相同):

12、  忽略样式中的大小写,-i:

13、  用grep匹配多个样式,-e:

14、  在grep搜索中指定(--include)或排除(--exclude)文件:

目录中递归搜索所有的.c和.cpp文件

在搜索中排除所有的README文件

如果需要排除目录,使用--exclude-dir选项

15、  grep静默输出,-q:

不输出任何内容,如果成功匹配返回0,如果失败返回非0值。

16、  打印出匹配文本之前或之后的行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@localhost tmp]# seq 10
1
2
3
4
5
6
7
8
9
10
[root@localhost tmp]# seq 10 | grep 5 -A 3  #打印匹配的后指定行数
5
6
7
8
[root@localhost tmp]# seq 10 | grep 5 -B 3  #打印匹配前指定行数
2
3
4
5
[root@localhost tmp]# seq 10 | grep 5 -C 3    #打印匹配前后指定行数
2
3
4
5
6
7
8

二、  使用sed进行文本替换

  sed是流编辑器(stream editor)的缩写。sed一个用法为文本替换。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@cairui ~]# sed --help
Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]...

  -n, --quiet, --silent
                 suppress automatic printing of pattern space  #取消自动打印模式空间
  -e script, --expression=script
                 add the script to the commands to be executed  #添加“脚本”到程序的运行列表
  -f script-file, --file=script-file
                 add the contents of script-file to the commands to be executed  #添加“脚本文件”到程序的运行列表
  --follow-symlinks
                 follow symlinks when processing in place; hard links
                 will still be broken.
  -i[SUFFIX], --in-place[=SUFFIX]
                 edit files in place (makes backup if extension supplied).
                 The default operation mode is to break symbolic and hard links.
                 This can be changed with --follow-symlinks and --copy.
  -c, --copy
                 use copy instead of rename when shuffling files in -i mode.
                 While this will avoid breaking links (symbolic or hard), the
                 resulting editing operation is not atomic.  This is rarely
                 the desired mode; --follow-symlinks is usually enough, and
                 it is both faster and more secure.
  -l N, --line-length=N
                 specify the desired line-wrap length for the `l' command
  --posix
                 disable all GNU extensions.
  -r, --regexp-extended
                 use extended regular expressions in the script.
  -s, --separate
                 consider files as separate rather than as a single continuous
                 long stream.
  -u, --unbuffered
                 load minimal amounts of data from the input files and flush
                 the output buffers more often
      --help     display this help and exit
      --version  output version information and exit

If no -e, --expression, -f, or --file option is given, then the first
non-option argument is taken as the sed script to interpret.  All
remaining arguments are names of input files; if no input files are
specified, then the standard input is read.

GNU sed home page: <http://www.gnu.org/software/sed/>.
General help using GNU software: <http://www.gnu.org/gethelp/>.
E-mail bug reports to: <bug-gnu-utils@gnu.org>.
Be sure to include the word ``sed'' somewhere in the ``Subject:'' field.

1、  sed可以替换给定文本的字符串:

该使用从stdin中读取输入,不影响原本的内容

2、默认情况下sed命令打印替换后的文本,如果想连原文本一起修改加-i命令,-i:

3、  之前的sed都是替换第一个匹配到的内容,想要全部替换就要在末尾加g:

从第N个匹配开始替换

sed中的/为定界符,使用任何其他符号都可以替代

4、  移除空白行

三、  使用awk进行高级文本处理

  awk是一款设计用于数据流的工具。它对列和行进行操作。awk有很多内建的功能,比如数组、函数等,和C有很多相同之处。awk最大的优势是灵活性。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@cairui ~]# awk --help
Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...
POSIX options:        GNU long options:
    -f progfile        --file=progfile
    -F fs            --field-separator=fs
    -v var=val        --assign=var=val
    -m[fr] val
    -O            --optimize
    -W compat        --compat
    -W copyleft        --copyleft
    -W copyright        --copyright
    -W dump-variables[=file]    --dump-variables[=file]
    -W exec=file        --exec=file
    -W gen-po        --gen-po
    -W help            --help
    -W lint[=fatal]        --lint[=fatal]
    -W lint-old        --lint-old
    -W non-decimal-data    --non-decimal-data
    -W profile[=file]    --profile[=file]
    -W posix        --posix
    -W re-interval        --re-interval
    -W source=program-text    --source=program-text
    -W traditional        --traditional
    -W usage        --usage
    -W use-lc-numeric    --use-lc-numeric
    -W version        --version

To report bugs, see node `Bugs' in `gawk.info', which is
section `Reporting Problems and Bugs' in the printed version.

gawk is a pattern scanning and processing language.
By default it reads standard input and writes standard output.

Examples:
    gawk '{ sum += $1 }; END { print sum }' file
    gawk -F: '{ print $1 }' /etc/passwd

awk脚本的结构基本如下所示:

awk ' BEGIN{ print "start" } pattern { commands } END { print "end" }' file

awk脚本通常由3部分组成。BEGIN,END和带模式匹配选项的常见语句块。这3个部分都是可选的。

1、工作原理

(1)执行BEGIN { commands }语句块中的语句。

(2)从文件或stdin中读取一行,然后执行pattern { commands }。重复这个过程,直到文件全部被读取完毕。

(3)当读至输入流末尾时,执行END { commands }语句块。

其中最重要的部分就是pattern语句块中的通用命令。这个语句块同样是可选的。如果不提供该语句块,则默认执行{ print },即打印所读取到的每一行。awk对于每一行,都会执行这个语句块。这就像一个用来读取行的while循环,在循环中提供了相应的语句。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-02-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
运维分享|Linux指令入门之文本查看(三)
简介: 在 linux 处理文本时要用到工具,执行命令和结果很多时候也是文本方式,处理文本三剑客:grep sed awk。我们常说linux系统中一切皆文件,对服务配置也都是需要编辑相应的配置文件的。对于我们来说,先查看这些配置文件才是重点。在linux中查看文本文件最常见的命令包括cat、tail、more和head。
六月暴雪飞梨花
2023/11/27
2350
运维分享|Linux指令入门之文本查看(三)
Linux中文本处理三剑客:grep, sed, awk
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/152
joshua317
2021/10/09
7510
shell文本处理工具sed、cut、awk
第二行后面加入两行字 使用\可以一次加多行,每一行之间都必须要以反斜杠 \ 来进行新行标记
丁D
2022/08/12
6210
一天一个 Linux 命令(20):sed 命令
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/150
joshua317
2021/10/09
3210
Sed详解
1、说明 sed 一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。 2、用法 sed: 用法: sed [选项]... {脚本(如果没有其他脚本)} [输入文件]... -n, --quie
苦咖啡
2018/04/28
9180
性能工具之linux三剑客awk、grep、sed详解
linux 有很多工具可以做文本处理,例如:sort, cut, split, join, paste, comm, uniq, column, rev, tac, tr, nl, pr, head, tail.....,学习 linux 文本处理的懒惰方式(不是最好的方法)可能是:只学习grep,sed和awk。
高楼Zee
2019/07/17
4.3K0
性能工具之linux三剑客awk、grep、sed详解
【Linux】文本处理三剑客:grep、sed 和 awk
在日常的开发、运维、数据分析等工作中,我们经常需要处理大量的文本数据。无论是日志分析、配置文件修改,还是数据提取与格式化,命令行工具 grep、sed 和 awk 都是不可或缺的得力助手。它们被戏称为“文本处理三剑客”,为我们提供了高效且灵活的方式来处理和操作文本数据。
人不走空
2024/12/10
4110
Linux命令三剑客
grep ---- 一句话概括 grep 命令用于查找文件里符合条件的字符串 语法 grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...] 参数 -a 或 --text 不要忽略二进制的数据。 -A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。 -b 或 --by
呆呆
2021/08/01
5560
Linux常用命令
1:  shutdown [root@cairui ~]# shutdown --help Usage: shutdown [OPTION]... TIME [MESSAGE]  #使用 Bring the system down. Options: -r reboot after shutdown            #重启,也可以直接使用 reboot 命令 -h halt or power
用户1173509
2022/05/09
7630
Linux常用命令
Linux系统开发: 学习linux三剑客(awk、sed、grep)(上)
Linux中的三个命令awk、sed、grep在业界被称为“三剑客”,grep擅长查找,sed擅长取行和替换,awk擅长运算。
DS小龙哥
2022/01/26
9.5K0
Linux系统开发: 学习linux三剑客(awk、sed、grep)(上)
Linux文本处理工具:grep、sed和awk
Linux操作系统以其强大的命令行工具而闻名,这些工具使得对文本数据的处理变得异常高效。在众多的文本处理工具中,grep、sed和awk是最为常用且功能强大的三个。本文将详细介绍这三个工具的基本用法和一些高级技巧。
炒香菇的书呆子
2024/07/30
1620
Linux三大剑客之sed
版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢。联系本人:ecsboy(微信),136625317(QQ) https://blog.csdn.net/solaraceboy/article/details/79272344
耕耘实录
2018/12/20
8880
Linux awk 命令
AWK是一种处理文本文件的语言,是一个强大的文本分析工具。之所以叫AWK是因为其取了三位创始人Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。
狼啸风云
2019/11/03
4.3K0
shell脚本编程神器之awk语法案例详解
假设存在一个文件 emp.data,其中包含员工的姓名、薪资(美元/小时)以及小时数,一个员工一行数据,其内容如下:
青山师
2023/05/05
8900
shell脚本编程神器之awk语法案例详解
从零开始的异世界生信学习 linux部分 linux 基础---学习笔记-3 Linux三剑客 grep,sed,awk
-w:word 精确查找某个关键词 pattern less -S Data/example.gtf | grep -w 'gene' ##匹配文件中含有gene的文字
用户10361520
2023/02/21
5750
Linux进阶 03 文本处理三驾马车
⭐重头戏来啦!真的很难很繁琐,每个命令下面又有许多个小参数,套娃!先记录下来以后要多看看~
可乐同学与生信死磕到底
2024/04/18
2471
Linux正则与文本处理工具
正则表达式 (Regular Expression, RE, 或称为常规表达式)是通过一些特殊字符的排列,用于『查找/替换/删除』一行或多行文字或字符串,简单的说,正则表达式就是用在字串的处理上面的一种『表示公式』,正则表达式并不是一个工具程序,而是一个对字符串处理的标准依据,如果您想要以正则表达式的方式处理字串,就得要使用支持正则表达式的工具程序才行,这类的工具程序很多,例如 vi,vim,sed,awk,gawk,egrep等.
王瑞MVP
2022/12/28
2.5K0
Linux正则与文本处理工具
linux中最为常用的三大文本(grep,sed,awk)处理工具
Sed is a stream editor. sed全称是:stream editor 流编辑器 对文件的操作无非就是”增删改查“,sed命令就是实现对文件的”增删改查“。
天天Lotay
2022/11/16
6.2K0
linux中最为常用的三大文本(grep,sed,awk)处理工具
Linux的文本处理工具浅谈-awk sed grep
日志样子举例如下: http://youku.com 200 http://youku.com 302 http://youku.com 403 http://youku.com 502 http://baidu.com 302 http://baidu.com 404 现想使用awk命令按域名统计 返回码大于等于400的百分比,假如优酷总共有4行,大于等于400的返回码有两行,那占比就为50%
sunsky
2020/08/20
3.6K0
Awk学习笔记
awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk的处理文本和数据的方式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕),如果没有指定模式,则所有被操作所指定的行都被处理。awk分别代表其作者姓氏的第一个字母。因为它的作者是三个人,分别是Alfred Aho、Brian Kernighan、Peter Weinberger。gawk是awk的GNU版本,它提供了Bell实验室和GNU的一些扩展。下面介绍的awk是以GUN的gawk为例的,在linux系统中已把awk链接到gawk,所以下面全部以awk进行介绍。
一见
2019/03/14
2.5K0
相关推荐
运维分享|Linux指令入门之文本查看(三)
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验