正则表达式(grep、set、awk)简单操作示例(图文)

正则表达式

grep

grep [-cinvABC] 'word' filename

 配置 管道 符号 一起使用:

 -c 行数

 -i 不区分大小写

 -n 显示行号

 -v 取反

 -r 遍历所有子目录

 grep –r ‘oracle’ ./grep

 -A 后面跟数字,过滤出符合要求的行以及下面n行

 -B 同上,过滤出符合要求的行以及上面n行

 -C 同上,同时过滤出符合要求的行以及上下各n行

 

1、grep -n 'root' /etc/passwd

显示etc下passwd文件中含root的数据,并显示行号

 

 

2、grep -nv 'nologin' /etc/passwd

显示etc下passwd文件中不含有nologin的数据,并显示行号

 

 

3、grep  '^#' /etc/inittab

显示etc下inittab文件中以#开头的数据

 

 

4、egrep 'o+' /etc/passwd

显示etc下passwd文件中含有一个或者数个o的数据

 

 

 

set

1、sed -n '5'p test.txt

显示文件第五行

 

 

2、sed -n '1,5'p test.txt

显示文件一到五行

 

 

3、sed -n '1,$'p test.txt

显示文件一到最后一行

 

 

 

4、sed -n ‘/root/’p test.txt :包括root

显示文件中含有root的行

 

 

5、sed -n ‘/^1/’p test.txt  以1开头的

显示文件中以1开头的行

 

 

6、sed -n '/r..o/'p test.txt

显示文件中含r..o的行

 

 

7、sed '1'd test.txt

显示文件中除第一行以外的行数

 

8、sed '1,3'd test.txt

显示文件中除第一行到第三行以外的行数

 

 

9、sed '/oot/'d test.txt

显示文件中没有oot的行

 

 

10、sed '1,2s/ot/to/g' test.txt

把文件中一二行的ot都改成to后显示

 

 

 

 

11、sed 's#ot#to#g' test.txt

把文件中所有ot都改为to后显示

 

 

12、sed 's/[0-9]//g' test.txt

不显示文件中数字

 

 

13、sed 's/[a-zA-Z]//g' test.txt

不显示文件中字母

 

 

14、sed -r 's/(rot)(.*)(bash)/\3\2\1/' test.txt

把文件中字段改为命令中顺序

 

15、sed 's/^.*$/123&/' test.txt

把文件中每行数据前加123

 

16、sed -i 's/ot/to/g' test.txt

把文件中的ot全改为to

 

awk

1、head -n2 test.txt|awk -F ':' '{print $1}'

显示文件中前两行的以:分隔开的第一段数据

 

 

2、head -n2 test.txt|awk -F ':' '{print $0}'

显示文件中前两行以:分隔开的整段数据

 

 

3、awk -F ':' '{print $1"#"$2"#"$3"#"$4}'

显示文件数据为:更改为#显示

 

 

4、awk '/oo/' test.txt

显示文件中含有oo的行

 

 

5、awk -F ‘:’ ‘$1 ~/oo/’ test.txt  

显示文件中以冒号分隔开的数据中第一段包含oo的

 

 

6、awk -F ':' '/root/ {print $1,$3} /test/ {print $1,$3}' test.txt

显示文件中以冒号分隔开的数据中含有root和111的数据的第一段和第三段

 

 

7、awk -F ':' '$3=="0"' /etc/passwd

显示文件中以冒号分割开的数据中第三段等于0的数据

 

 

8、awk -F ':' '$3>="500"' /etc/passwd

显示文件中以冒号分割开的数据中第三段大于“500”的数据

 

 

9、awk -F ':' '$3>=500' /etc/passwd

显示文件中以冒号分割开的数据中第三段大于500的数据

 

 

10、awk -F ':' '$7!="/sbin/nologin"' /etc/passwd

显示文件中以冒号分割开的数据中第七段等于"/sbin/nologin"的数据

 

 

11、awk -F ':' '$3<$4' /etc/passwd

显示文件中以冒号分割开的数据中第四段大于第三段的数据

 

 

12、awk -F ':' '$3>"5" && $3<"7"' /etc/passwd

显示文件中以冒号分割开的数据中第三段大于第五段且第三段小于第七段的数据

 

 

13、awk -F ':' '$3>1000 || $7=="/bin/bash"' /etc/passwd

显示文件中以冒号分割开的数据中第三段大于1000且第七段等于"/bin/bash"的数据

 

 

14、head -5 /etc/passwd |awk -F ':' '{OFS="#"} {print $1,$3,$4}’

显示文件中前五行以冒号分割开的数据的第一段第三段第四段数据

并将冒号改为#

 

 

 

15、awk -F ':' '{OFS="#"} {if ($3>1000) {print $1,$2,$3,$4}}' /etc/passwd

显示文件中以冒号分割开的数据中第三段大于1000的数据的1到4段数据

并将冒号改为#

 

 

16、head -n3 /etc/passwd | awk -F ':' '{print NF}’

显示三行文件中以冒号分割开的数据的NF

 

 

17、head -n3 /etc/passwd | awk -F ':' '{print NR}‘

显示三行文件中以冒号分割开的数据的NR

 

 

18、awk 'NR>40' /etc/passwd

显示文件中NR大于40的数据

 

 

19、awk -F ':' 'NR<20 && $1 ~ /roo/' /etc/passwd

显示文件中以冒号分割开且NR<20且第一段中含有roo的数据

 

 

20、head -n 3 /etc/passwd |awk -F ':' '$1="root"‘

显示三行文件第一段为root的文件

 

 

21、awk -F ':' '{(tot=tot+$3)}; END {print tot}' /etc/passwd

显示文件中所有以冒号隔开的数据的第三段的和

 

 

22、awk -F ':' '{if ($1=="root") {print $0}}' /etc/passwd

显示文件中所有以冒号隔开的且第一段等于root的数据

 

 

 

 

 

 

 

运用awk实际操作将三个文件内容写入一个文件

 

猜你喜欢

转载自blog.csdn.net/qq_42774325/article/details/81318796