Linux文本过滤命令grep|awk|sed小结

文章目录

[隐藏]

  • grep的使用
    • 一、grep一般格式
    • 二、grep常用选项
    • 三、常用选项的使用
    • 四、grep和正则表达式
  • awk的使用
    • 一、awk的调用格式
    • 二、动作和模式
    • 三、域和记录
  • sed的使用
    • 一、sed调用格式
    • 二、sed选项
    • 三、sed常规用法
grep的使用

一、grep一般格式

grep [选项] 基本正则表达式 [文件]  

这里的正则表达式可以为字符串。在grep命令中输入字符串参数时,最好将其用双引号括起来。调用变量时也可以使用双引号。在调用模式匹配事,应使用单引号。

二、grep常用选项

-c 只输出匹配行的计数。
-i 不区分大小写(只用于单字符)。
-h 查询多文件时不显示文件名。
-l 查询多文件时只输出包含匹配字符的文件名。
-n 显示匹配行及行号。
-s 不显示不存在或无匹配文本的错误信息。
-v 显示不包含匹配文本的所有行。

三、常用选项的使用

1、 查询多个文件:

$grep  “hello” *.doc  num.doc:hello  sum.doc:hello world  

说明在num.doc 和sum.doc中有字符串“hello“。

2、 行匹配:

$grep -c “123” *.doc  num.doc:2  sum.doc:2  

说明在num.doc 和sum.doc中有字符串“123“各为两行。

3、 显示满足匹配模式的所有行数:

$grep –n “123” *.doc  num.doc:1:hao 123  num.doc:2:hao 123  sum.doc:2:hao 123  sum.doc:4:hao 1234  

4、 显示所有不包含“123“的行:

$grep  -v “123” *.doc  num.doc:hello  num.doc:world  sum.doc:hello world  sum.doc:sui yue  

5、 精确匹配:

如第三点,匹配“123”时,结果返回了“1234”的其它字符串。

$grep -n “123>” *.doc  num.doc:1:hao 123  num.doc:2:hao 123  sum.doc:2:hao 123  

6、 大小写敏感:

缺省情况下,grep是大小写敏感的,如果要查询大小写不敏感的字符串,必须

使用-i选项。

$grep -i “just” *.doc  num.doc:Just  num.doc:just  

四、grep和正则表达式

1、模式范围:

$ grep  ‘48[34]’ mydata.doc  

此命令在mydata.doc中匹配字符串“483”和“484”。

2、 不匹配行首:

$ grep  ‘^[^48]’ mydata.doc  

此命令在mydata.doc中匹配除4或者8开头的行。

3、 设置大小写:

$ grep  ‘[Ss]ept’  mydata.doc  

此命令在mydata.doc中匹配字符串“Sept”和“sept”。

4、匹配任意字符:

$ grep  ‘a…z’ mydata.doc  

此命令在mydata.doc中匹配字符串以字符a开头和字符z结尾,中间为任意三个字符。

5、 模式出现的机率

$ grep ‘1{2,}’ mydata.doc  

此命令说明数字1至少出现两次


awk的使用

一、awk的调用格式

awk的调用格式有三种:

第一种是命令行的方式,如下:

awk [-F field-separator] ‘commands’ input-file  

[-F]域分隔符,是可选的,awk使用空格作为缺省的域分隔符。

第二种方法是将awk命令插入到一个文件,并使awk程序可以执行,然后用awk命令解释器作为脚本的首行,以便通过键入脚本名称来调用它。

第三种方法是将所有的awk命令插入一个单独文件,然后调用:

awk –f awk-script-file input-file  

二、动作和模式

任何awk语句都有模式和动作组成。模式部分决定动作语句何时触发及触发事件。

模式包括两个特殊字段BEGIN和END.,BEGIN语句使用在任何文本浏览动作之前,之后文本浏览动作依据输入文件开始执行,END语句用来在awk完成文本浏览动作后打印输出文本中输出和结尾状态标志。实际动作在大括号内指明。

三、域和记录

awk执行时,其浏览域标记为$1,$2 ….$n.。这种方法称为域标识。

1、保存awk输出

第一种方法:

$awk ‘{print $0}’ mydata.txt >newfile.txt  

显示屏上不会输出结果。

第二种方法:

$awk ‘{print $0}’ mydata.txt | tee newfile.txt  

输出到文件中,同时显示在显示器上。

2、使用标准输入

第一种方法:使用awk脚本输入文件格式

$myawk.awk inputfile.txt  

第二种方法:使用重定向

$myawk.awk < inputfile.txt  

第三种方法:使用管道

$inputfile.txt | myawk.awk  

3、打印所有记录

$awk ‘{print $0}’ myfile.txt  

由于没有模式部分,只有动作部分,动作必须用花括号括起来。

Lisi 25 wuhan  Wangjian 33 shanghai  Caiming 55 shenzhen  

4、打印单独记录

要用逗号分隔域

$awk ‘{print $1,$2}’ myfile.txt  Lisi 25  Wangjian 33  Caiming 55  

5、打印报告头

$awk ‘BEGIN {print “Name Agen******************“} {print $1”t”$2}’ mfile.txt    Name    Age  ***************  Lisi      25  Wangjian 33  Caiming 55  

6、打印信息尾

$awk ‘BEGIN {print “Name n****** “} {print $1 } END {“end of reportn”}’ mfile.txt  

sed的使用

一、sed调用格式

sed调用格式有三种:

第一种命令行方式:

sed [option] ‘command’ inputfile  

ommand要加单引号,也允许加双引号。

第二种使用sed脚本文件:

sed  [option]  –f  sed-script-file inputfile  

第三种使用第一行具有sed命令解释器的sed脚本文件:

sed-script-file [option] inputfile  

二、sed选项

n 不打印:sed不写编辑行到标准输出,缺省为打印所有行。P命令可以用来打印编辑行。
c 下一命令是编辑命令。使用多项编辑时加入选项。
f 如果正在调用sed脚本文件,使用此选项。此选项通知sed脚本文件支持所有的sed命令。

三、sed常规用法

1、 保存sed 输出

$ sed  ‘command’ inputfile > outfile  

2、 sed在文件中查找文本的方式

sed浏览文件时,默认从第一行开始,有两种方法定位文本:
第一种:使用行号,可以用简单数字或是一个行号范围。
第二种:使用正则表达式。

Sed定位文本的一些方式,如下:

x x表示行号。  x,y 表示行号范围从x到y。  /pattern/ 查找包含模式的行。  x,/pattern 通过行号和模式查询匹配行。  x,y! 查找不包含指定行号x到y的行。  

3、 sed编辑命令

p 打印匹配行  = 显示文件行号  a 在定位行号后附加拳文本信息  i 在定位行号后插入拳文本信息  d 删除定位行  c 用拳文本替换定位文本  s 使用替换模式替换相应模式  r 从另一个文件中读文本  w 写文本到一个文件  q 第一个模式匹配完成后推出或立即推出  l 显示与八进制ASCII代码造价的控制字符  {} 在定位行执行的命令组  n 从另一个文件中读文本下一行,并附加在下一行  g 将模式2粘贴到/pattern n/  y 传送字符  n 延续到下一输入行;允许跨行的模式匹配语句。  

4、 使用p显示行

$sed -n ‘2p’ myfile.txt  Hello world!  

-n选项,显示打印定位行。

5、 打印范围

$sed -n ‘1,3p’ myfile.txt  Hao 123  Hello world!  Ni hao ma?  

打印1到3行。

6、 打印模式

$sed -n ‘/123/’p myfile.txt  Hao 123  

匹配

7、 在指定行号匹配模式

$sed -n ‘5,/Hao/’p myfile.txt  Hao ma?  

原文出处:csdn -> http://blog.csdn.net/u010666884/article/details/51381947

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。