Grep
Grep家族
基础部分
常用选项
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| -E :开启扩展(Extend)的正则表达式。
-i :忽略大小写(ignore case)。
-v :反过来(invert),只打印没有匹配的,而匹配的反而不打印。
-n :显示行号
-w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker
-c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。
-o :只显示被模式匹配到的字符串。
--color :将匹配到的内容以颜色高亮显示。
-A n:显示匹配到的字符串所在的行及其后n行,after
-B n:显示匹配到的字符串所在的行及其前n行,before
-C n:显示匹配到的字符串所在的行及其前后各n行,context
|
操作演示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| [root@ansible-server ~] root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
[root@ansible-server ~] PermitRootLogin yes
[root@ansible-server ~] 1:root:x:0:0:root:/root:/bin/bash 10:operator:x:11:0:operator:/root:/sbin/nologin
[root@ansible-server ~] 40
[root@ansible-server ~] root root root root
[root@ansible-server ~] [root@ansible-server ~] root:x:0:0:root:/root:/bin/bash insocoper:x:1000:1000:insocoper:/home/insocoper:/bin/bash
|
Sed
sed在处理文本时是逐行读取文件内容,读到匹配的行就根据指令做操作,不匹配就跳过。
sed是Linux下一款功能强大的非交互流式文本编辑器,可以对文本文件进行增、删、改、查等操作,支持按行、按字段、按正则匹配文本内容,灵活方便,特别适合于大文件的编辑。本文主要介绍sed的一些基本用法,并通过shell脚本演示sed的使用实例。
常用选项
1 2 3 4 5 6 7 8 9
| -r:使用扩展正则表达式
-e:它告诉sed将下一个参数解释为一个sed指令,只有当命令行上给出多个sed指令时才需要使用-e选项
-f:后跟保存了sed指令的文件
-i:直接对内容进行修改,不加-i时默认只是预览,不会对文件做实际修改
-n:取消默认输出,sed默认会输出所有文本内容,使用-n参数后只显示处理过的行
|
操作演示
向文件中添加或插入行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| sed '3ahello' 1.txt
sed '/123/ahello' 1.txt
sed '$ahello' 1.txt
sed '3ihello' 1.txt
sed '/123/ihello' 1.txt
sed '$ihello' 1.txt
sed -i '/www.baidu.com/i\www.qq.com' domain.file
sed -i '/www.baidu.com/a\www.qq.com' domain.file
|
更改文件中指定的行
1 2 3 4 5 6 7 8
| sed '1chello' 1.txt
sed '/123/chello' 1.txt
sed '$chello' 1.txt
|
删除文件中的行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| sed '4d' 1.txt
sed '1~2d' 1.txt
sed '1,2d' 1.txt
sed '1,2!d' 1.txt
sed '$d' 1.txt
sed '/123/d' 1.txt
sed '/123/,$d' 1.txt
sed '/123/,+1d' 1.txt
sed '/^$/d' 1.txt
|
替换文件中的内容
1 2 3 4 5 6 7 8
| sed -i 's/123/hello/' 1.txt
sed -i 's/123/hello/g' 1.txt
sed -i 's/123/hello/2' 1.txt
|
打印文件中的行
1 2 3 4 5 6 7 8 9 10 11
| sed -n '3p' 1.txt
sed -n '1,3p' 1.txt
sed -n '$p' 1.txt
sed -n '3,$p' 1.txt
|
删除文件中的空白行
Awk
AWK 是一种处理文本文件的语言,是一个强大的文本分析工具,之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符
选项:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| [root@ansible-server ~] /dev/sdb1 /data1 ext4 defaults 0 0 /dev/sdc1 /data2 ext4 defaults 0 0 /dev/sdd1 /data3 ext4 defaults 0 0 /dev/sde1 /data4 ext4 defaults 0 0 /dev/sdf1 /data5 ext4 defaults 0 0 /dev/sdg1 /data6 ext4 defaults 0 0
[root@ansible-server ~] /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1
[root@ansible-server ~] /dev/sdb1 /data1 /dev/sdc1 /data2 /dev/sdd1 /data3 /dev/sde1 /data4 /dev/sdf1 /data5 /dev/sdg1 /data6
[root@ansible-server ~] 0 0 0 0 0 0
[root@ansible-server ~] defaults defaults defaults defaults defaults defaults
[root@ansible-server ~] dev dev dev dev dev dev
|