美文网首页
文本处理grep和sed

文本处理grep和sed

作者: SecondBJ | 来源:发表于2018-08-21 20:03 被阅读0次

一:grep

语法: grep [-cinvABC] ‘word’ filename
-c :打印符合要求的行数
-i :忽略大小写
-n :在输出符合要求的行的同时连同行号一起输出
-v :打印不符合要求的行
-A :后跟一个数字(有无空格都可以),例如 –A2则表示打印符合要求的行以及下面两行
-B :后跟一个数字,例如 –B2 则表示打印符合要求的行以及上面两行
-C :后跟一个数字,例如 –C2 则表示打印符合要求的行以及上下各两行
1、 image.png
image.png
2、 过滤出带有某个关键词的行并输出行号
image.png
3、过滤不带有某个关键词的行,并输出行号
image.png
4、 过滤出所有包含数字的行
image.png
image.png
在前面也提到过这个”[ ]”的应用,如果是数字的话就用[0-9]这样的形式,当然有时候也可以用这样的形式[15]即只含有1或者5,注意,它不会认为是15。如果要过滤出数字以及大小写字母则要这样写[0-9a-zA-Z]。另外[ ]还有一种形式,就是[^字符] 表示除[ ]内的字符之外的字符
5、过滤出文档中以某个字符开头或者以某个字符结尾的行
image.png
image.png
在正则表达式中,”^”表示行的开始,"$"表示行的结尾,那么空行则表示"^$",如果你只想筛选出非空行,则可以使用 “grep -v ‘^$’ filename”得到你想要的结果
如何打印出不以英文字母开头的行呢?
image.png
6、 过滤任意一个字符与重复字符
image.png

“.”表示任意一个字符,上例中,就是把符合r与o之间有两个任意字符的行过滤出来。
"*"表示零个或多个前面的字符。
‘.*’表示零个或多个任意字符,空行也包含在内。

7、指定要过滤字符出现的次数
image.png
这里用到了{ },其内部为数字,表示前面的字符要重复的次数。上例中表示包含有两个o 即’oo’的行。注意,{ }左右都需要加上脱意字符’\’。另外,使用{ }我们还可以表示一个范围的,具体格式是 ‘{n1,n2}’其中n1<n2,表示重复n1到n2次前面的字符,n2还可以为空,则表示大于等于n1次。

egrep

1、 筛选一个或一个以上前面的字符
image.png
image.png
和grep的 {2}不同的是,egrep这里是使用’+’的。
2、 筛选零个或一个前面的字符
image.png
3、 筛选字符串1或者字符串2
image.png
4、egrep中’( )’的应用
image.png

二、sed

grep 工具的功能其实还不够强大,其实说白了,grep实现的只是查找功能,而它却不能实现把查找的内容替换掉。以前用vim的时候,可以查找也可以替换,但是只局限于在文本内部来操作,而不能输出到屏幕上。sed工具以及下面要讲的awk工具就能实现把替换的文本输出到屏幕上的功能了,而且还有其他更丰富的功能。sed和awk都是流式编辑器,是针对文档的行来操作的。
1、打印某行 sed -n ‘n’p filename 单引号内的n是一个数字,表示第几行
image.png
2、打印多行 打印整个文档用 -n ‘1,$’p
image.png
3、 打印包含某个字符串的行
image.png
上面grep中使用的特殊字符,如’^’, ‘$’, ‘.’, ‘*’等同样也能在sed中使用。
image.png
image.png
image.png
4、 -e 可以实现多个行为
image.png
5、-d 删除某行或者多行
image.png
6、 替换字符或字符串
image.png

如何删除文档中的所有数字或者字母?


image.png
7、调换两个字符串的位置
image.png
8、直接修改文件的内容

sed -i ‘s/:/#/g’ test.txt ,这样就可以直接更改test.txt文件中的内容了。

1. 删除test.txt 的15行以及以后所有行;
 sed '15,$'d test.txt
2.删除test.txt中5到10行中所有的数字;
 sed '5,10s/[0-9]//g' test.txt
3. 删除test.txt 中所有特殊字符(除了数字以及大小写字母);
 sed 's/[^0-9a-zA-Z]//g' test.txt
4. 把/etc/passwd 复制到/root/test.txt,用sed打印所有行;
 /bin/cp /etc/passwd /root/test.txt ; sed -n '1,$'p test.txt

相关文章

  • Linux文本处理三剑客——awk

    文本处理三工具:grep,sed,awk grep:文本过滤工具:pattern; sed:行编辑器:模式空间、保...

  • Linux文本处理三剑客——sed

    文本处理三工具:grep,sed,awk grep:文本过滤工具:pattern sed:行编辑器:模式空间、保持...

  • Linux文本处理三剑客——grep

    文本处理三工具:grep,sed,awk grep:文本过滤工具:pattern sed:行编辑器:模式空间、保持...

  • 简谈linux文本处理-sed

    文本处理能力是Linux强大优势之一,其中grep,sed和awk被称为Linux文本处理三板斧。grep 主要配...

  • note_17.3_awk

    GNU awk: 文本处理三工具:grep, sed, awk grep, egrep, fgrep:文本过滤工具...

  • inux学习 Day15-sed基本用法

    文本处理工具:grep,sed(流编辑器),awk sed基本用法:sed(Stream EDitor)行编辑器(...

  • awk

    awk的简介和功能 awk: Linux 文本处理三剑客:grep、sed和awk。其中grep是一种文本过滤工具...

  • Linux上文本处理三剑客awk

    GNU awk:gawk 文本处理三工具:grep, sed, awkgrep, egrep, fgrep:文本过...

  • Linux sed工具基础用法小结

    sed即stream editor,意译为“流式编辑器”。它是Linux中三大文本处理工具(grep、sed、aw...

  • sed介绍

    sed是什么 sed是linux文本处理工具三剑客(grep,sed,awk)之一,用来处理文本的流编辑工具。主要...

网友评论

      本文标题:文本处理grep和sed

      本文链接:https://www.haomeiwen.com/subject/ycsjiftx.html