linux之grep、sed、awk工具的使用

Linux实现一些命令可以调取相关工具实现对文本的精准查找和匹配,常用的有grep、sed、awk等命令可以调取相应的工具。其中grep、sed、awk都是针对文本的行进行操作的。

1.grep命令

命令功能:是一种强大的文本搜索工具,能使用正则表达式搜索文本,然后把匹配的行显示出来。

命令格式:grep [-cinvABC] ‘word’ filename

参数说明:

       -c 输出匹配的行数量

         -i  搜索时忽略大小写

         -h  查询多文件时不显示文件名

         -l   只列出符合匹配的文件名,不列出具体匹配行

         -n  列出所有匹配行,并显示行号

         -s  不显示不存在或匹配文本的错误信息

         -v  显示不包含匹配文本的所有行

         -w  匹配整词

         -x   匹配整行

         -r   递归搜索,搜多当前目录及子目录

         -E  支持扩展正则表达式

         -F  不支持正则表达式,按照字符串的字面意思进行匹配

      -A,-B ,-C:后面跟一个数字(有无空格均可),如-A2表示输出符合要求的行以及下面两行;-B2表示输出符合要求的行以及上面两行;-C2表示输出符合要求的行以及上下两行;

2. sed命令

grep工具只能进行查找,而不能实现针对查找的内容的替换,sed工具可以把替换的文本输出到屏幕上,还可以实现删除某一行的功能。

(1)sed命令的格式:sed -n ‘n’p filename

单引号里的n是一个数字,可以指定第几行;也可以是逗号连接的两个数字,指定打印的行区间;也可以是正则表达式,打印包含某个字符串的行。-n参数的作用是只显示我们要打印的行,不显示其他无关的内容。

(2)参数d表示删除的动作,可以删除指定的单行以及多行,可以都删除匹配某个字符的行,也可以删除从文档里某一行开始到最后一行的所有行。注意这个操作只是在显示屏幕上不显示而已,文档里的内容依旧ok。

删除文档里的第一行:# sed '1'd test.txt

删除文档里的第一行到第十行:# sed '1,10'd test.txt

删除文档里包含“oot”字符串的行:# sed '/oot/'d test.txt

(3)参数s表示替换动作,可以添加参数g表示本行全局替换,否则只替换本行出现的第一个。被替换字符(串)和替换字符(串)之间可以使用/或者#或者@等其他特殊字符作为分隔符。

3.awk命令

awk和sed一样,都是流式编辑器,针对文档的行进行操作。awk是一行一行执行。兼具 sed功能,而且更强大。

-F参数指定每一行的分隔符,若不加此选项,则以空格或者tab为分隔符。print是打印动作,用来打印某一个字段。$1位第一个字段,$2位第二个字段,以此类推。$0则表示的是整行。

Note-F后面紧跟单引号,单引号里面为分隔符;print要用花括号括起来,否则会报错,print也可以打印自定义的内容,但是自定义内容要使用双引号括起来。

(1)用来匹配字符或者字符串

也可以实现某个字段去匹配,也可以多次匹配

(2)awk中可以使用逻辑符号进行判断。==,>,<,>=,<=,!=。还有&&,||表示“并且”和“或者”。

(3)awk常用的内置变量有OFS、NF、NR。OFS也是用来定义分隔符,但是是在输出时定义的,NF表示分隔符分割后总的段数,NR表示行号。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值