正则表达式在文本过滤中的使用
这个系列简单记录学习正则表达式的历程,结合在grep awk sed 中的使用,增强印象。
(三)grep awk sed 实践
同过几个小例子,熟悉grep awk sed的使用,文件test.txt
:
hello, i miss you.
I love google
Tecent is rubbish.
welcome to BERK.
my name is zhang yusheng.
milk, do you like.
yes, very much.
anything else
no hello
anything?
see you
统计文件的行数
- 使用awk
awk ‘END{print NR}’ test.txt
awk会循环处理相应的行,这里的命令是在循环的最后(END)输出行号 - 使用sed
sed -n ‘$=’ test.txt
其实,统计行数的最简单命令是使用wc
wc -l test.txt
打印文件的某(几)行
- 使用awk,显示第2行
cat -n test.txt | awk '{if($1==2){print $0}}'
这条命令,使用cat -n
显示文本内容并加行号,然后使用awk分割没一行,判断第一个域(行号)是否为2,如果是,就输出该行。 - 使用sed
sed -n '2p' test.txt
显示第2行
sed -n '2,5p' test.txt
显示第2-5行(包括第2和第5行)
sed -n '3,$p' test.txt
显示第3行到最后一行
找出某单词出现的行
比如,找test.txt中hello出现的行
grep hello test.txt
可以加上-n
参数,输出行号- awk ‘/hello/{print NR,$0}’ test.txt
先匹配“hello”,匹配上就输出行号和内容 - `sed -n ‘/hello/=’ test.txt
通过上边的例子,是不是对文本处理的正则有了更具体的了解了呢。