linux----三剑客

一、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]$ 

未完待续。。

你可能感兴趣的:(linux)