正则表达式中的符号

.小数点表示(一定有一个任意字符的意思)

*(星号表示重复前一个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}' 文件名称

变量名称

代表意义

NF

每一行拥有的字段总数

NR

目前awk所处理的是第几行的数据

FS

目前的分隔字符

[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