一、grep 查找或匹配文本
grep注意事项:
1.是在一个或者多个文件中查找某个字符模式,如果这个字符包含空格,就必须用引号把它括起来。
2.模式可以是被引号括起来的字符串,也可以是一个词,也可以是一个正则表达式。
3.在模式后边的所有单词都是文件名
语法:
grep [option] pattern file
例:
grep -c 'xxx' filename (-c:输出计数)
grep 'XXX' filename|head -n 10(输出前10行)
grep -h 'XXX' filename |head -n 10 (-h:查询多文件时不显示文件名)
grep -v 'XXX' filename| head -n 10(-v:查询不包含此单词的所有行)
grep -hE 'A\-*' filename|grep xxx|head -n 10(-E:以正则表达式输出)
其他的主要参数:
-i:不区分大小写。 -An -Bn -Cn
grep -E -o "[a-z]*\." filename (-o:部分匹配。[a-z]*:匹配a-z中任意一个字符。\.:匹配以.结尾的)
二、sed
编辑逐行处理文件,并将结果输出结果发送到屏幕,将正在处理的行保存在一个临时缓存中,这个缓存被称为模式空间或临时缓冲。
语法:
sed [options] '[command]' filename
1.first~step first:指其实匹配行,step:指步长
例:sed -n 2~5p(从第二行开始,每隔5行匹配一次)
2.$
匹配最后一行
3.sed '/XXX/p' filename (会将符号条件在重复打印一次)
sed -n '/XXX/p' filename (只会打印符号条件的)
4.d 删除
例:sed '3d' filename 删除第三行
sed '3,$d' filename 删除第三行到结尾
sed '/XXX/d' filename 删除符合条件的
5. s 替换
sed -e 's/old/new/g' filename g:全局替换,若没有g则只替换第一行的
sed -n 's/^old/new/p' filename (只打印发生替换的那些行,也就是只有在行首找到old,并替换成new时才会打印)
三、awk
是一个报告生成器,有强大的文本格式化能力。
工作原理:
1.逐行处理
2.对该行按照分隔符进行切片,默认为空格
3.$0表示整行 $NF表示当前行分割后的最后一列
cat A.log | awk-F '\\|' '{print $0}' | head -n 2
语法:
awk [options] 'pattern{action}' file
两种特殊处理的模式
1、BEGIN(处理文本之前需要的操作)
2、END(处理文本之后所需要的操作)
awk 'BEGIN{print 'aaa','bbb'} {print $1,$2} END{print 'ccc'}' filename
参数:
NF:字段数量
[centos@localhost day1]$ awk '{print NF $1 $NF}' awk1.log
5aaa1
3dddfff
3hhh111
[centos@localhost day1]$
NR:打印行号,可以和$0搭配使用
[centos@localhost day1]$ awk '{print NR $0}' awk1.log
1aaa bbb ccc 1 1
2ddd eee fff
3hhh ggg 111
[centos@localhost day1]$
可以在中间添加任何内容
[centos@localhost day1]$ awk '{print NR $1,"IS", $2}' awk1.log
1aaa IS bbb
2ddd IS eee
3hhh IS ggg
[centos@localhost day1]$
未完待续。。