正则表达式,grep,sed,aw(三剑客)
正则表达式中的符号
.小数点表示(一定有一个任意字符的意思)
*(星号表示重复前一个0到无穷多次)为组合形态
^ word 待搜寻的字符串word在行首
word$ 待搜寻的字符串word在行尾
\ 跳脱字符,将有特殊符号的特殊含义去掉
[^word]:取反:文本中不包含word的行数
grep
grep的常见用法:过滤出来特定文本所在的行
-n 在过滤的内容前显示行号
-A :后面可加数字,为 after 的意思,除了列出该行外,后续的 n 行也列出来;
-B :后面可加数字,为 befor 的意思,除了列出该行外,前面的 n 行也列出来;
注意:^符号在字符集合符号[]之内和之外是不同的。
[^]:表示反向选择
^[]:表示定位在行首开头的那个单词上
搜索特定字符串
grep -n '字符串' 文件名
反向选择:当该行中没有该字符串
grep -vn 'the' 文件名:输出文件名中不含the的那一行带上行号
找出空行:grep -n '^$' 文件名
sed
sed本身也是一个管道命令,可以将数据进行取代,删除,新增,截取
用法:常跟在管道命令后面
sed -选项和参数 funcion
1。将显示的数据2-5行删除
2.只删除第二行
3.删除3到最后一行
4.在显示的内容中第二行后面/前面新增一行Hello yuhang
5将显示的2-5行的内容重新定义
6.以行为单位的搜索取代功能
7.数据的搜索并取代功能
8.直接修改文本内容
awk
awk是一个好用的数据处理工具
awk '条件类型1' {动作一} '条件类型2 {动作2}' 文件名称
[root@linuxedu ~]# cat printf.txt
Name chinese English Math
yuhang 80 60 90
yuwei 76 55 33
linlin 56 88 09
取出文件中的语文和英语成绩
[root@linuxedu ~]# cat printf.txt | awk '{print $2 "\t "$3}'
chinese English
80 60
76 55
56 88
awk的实际应用中也会遇到逻辑判断
[root@linuxedu ~]# cat /etc/passwd | awk 'BEGIN{FS=":"} $3 < 10 {print $1 "\t" $3}'
root 0
bin 1
daemon 2
adm 3
lp 4
sync 5
shutdown 6
halt 7
mail 8
正则表达式,grep,sed,aw(三剑客)
https://originspace.work/archives/zheng-ze-biao-da-shi
评论