文本处理三剑客(grep、sed、awk)

简介: 文本处理三剑客(grep、sed、awk)

一.grep

1.1.grep介绍

20201105132632404.png

1.2.案例介绍

(重)例一:去除文件中的注释与空行

以nginx.conf为例

grep -Ev "^$|#" /etc/nginx/nginx.conf

例二:显示所有行的行号

grep -n “.” /etc/nginx/nginx.conf

二.sed

2.1.sed介绍

20201105151407381.png

2.2.案例介绍

范例文本:

[root@nginx ~]# cat test.txt 
1.dwhabduw
2.dawiofj
3.zckj
4.fjeb
5.sadnkjw

例一:在第二行后添加一行内容

sed "2a 2.1.dwadsa" test.txt

20201105153853292.png

注:i的用法与a相同。

例二:指定行后添加多行内容用“\”隔开

sed "2a 2.1.dwadsa\2.2.dawfsk" test.txt

例三:删除指定行内容

sed “2d” test.txt

例四:删除文本中指定的多行内容(范围)

注:表示从第二行到第四行之间的内容

sed "2,4d" test.txt

(重)例五:替换文本中内容

将文件中所有的1都替换成100

sed "s/1/100/g" test.txt

三.awk

3.1.awk介绍

2020110515565260.png

3.2.案例介绍

测试文件:

nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin

例一:显示文件的第二行

[root@nginx ~]# awk "NR==2" test2.txt 
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin

例二:显示文件的二到四行

[root@nginx ~]# awk "NR==2,NR==4" test2.txt 
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin

例三:给文件每行加上行号

[root@nginx ~]# awk '{print NR,$0}' test2.txt 
1 nobody:x:99:99:Nobody:/:/sbin/nologin
2 systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
3 dbus:x:81:81:System message bus:/:/sbin/nologin
... ...

例四:显示文件的第三列和第五列

注:$NF表示最后一列

[root@nginx ~]# awk -F ":" '{print $3,$5}' test2.txt 
99 Nobody
192 systemd Network Management
81 System message bus
999 User for polkitd
... ...

(重)例五:取出eth0网卡的ip

[root@nginx ~]# ifconfig eth0|awk -F "[ :]+" 'NR==2{print $3}'
192.168.1.5


目录
相关文章
|
7月前
|
机器学习/深度学习 Shell 开发工具
正则表达式 与文本三剑客(sed grep awk)
正则表达式 与文本三剑客(sed grep awk)
|
Perl 机器学习/深度学习