正则表达式在文本过滤中的使用
这个系列简单记录学习正则表达式的历程,结合在grep awk sed 中的使用,增强印象。
(二)初识grep awk sed
简单的认为,grep是对文本以‘行’为单位处理,awk是对文本中的行以‘域’为单位处理,sed直接以文本中的字符为单位处理。
比如,test.txt的内容:
Hi, I am Han Meimei.
My name is Li Lei.
Nice to meet you.
Nice to meet you, too.
I have a meeting.
Googbye.
see you again.
- 在命令行中显示所有内容:
cat test.txt
筛选除包含‘meet’的行:
cat test.txt | grep meet
or:
grep meet test.txt
这样会输出三行(注意第三行):Nice to meet you.
Nice to meet you, too.
I have a meeting.现在,假如只想输出每行的第一个单词:
cat test.txt | awk '{print $1}'
or
awk '{print $1}' test.txt
awk的作用是把文件的每一行,按分隔符(默认是空格或Tab)分成多个‘域’,然后可以对特定的域处理,比如‘see you’分开成两个域:$1是 see,$2是 you。另外$0代表所有的域。
awk的一般格式awk [-F xx] '{patter +action} {...} {} ' filename
其中[]是可选的, -F指定分隔符, ’ ‘里的每个{}是一个动作,可以有一个或多个.- 现在新的要求,把’you’ 换成 ’we‘ 并输出
sed 's/you/we/' test.txt
好了,更具体的使用后续再介绍。