Linux运维知识之Linux文本过滤命令grep|awk|sed小结
小标 2019-01-03 来源 : 阅读 1221 评论 0

摘要:本文主要向大家介绍了Linux运维知识之Linux文本过滤命令grep|awk|sed小结,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助。

本文主要向大家介绍了Linux运维知识之Linux文本过滤命令grep|awk|sed小结,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助。

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 Age\n******************“} {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 report\n”}’ 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?


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注系统运维Linux频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程