Linux三剑客
标签(空格分隔): Linux grep sed awk
[TOC]
在Linux系统当中,处理文本有三个常用的模式匹配命令 grep
sed
awk
,这三个命令十分灵活,应该熟练掌握
1. grep
常用场景:
ls -l | grep -name
cat test.txt | grep -v 123
2. sed
常用场景:
输出文件test.txt的2~5行
sed -n '2,5p' test.txt
3. awk
常用场景:
输出网卡eth0的IP地址
ifconfig eth0 | awk -F "[: ]+" 'NR==2 print{$4}'
解析:
awk
命令可以把文本分隔成若干部分,再通过 print
输出
eth0 Link encap:Ethernet HWaddr 00:0c:29:49:36:e0
inet addr:192.168.57.145 Bcast:192.168.57.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe49:36e0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:300950 errors:5 dropped:0 overruns:0 frame:0
TX packets:34769 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:34487134 (34.4 MB) TX bytes:9606983 (9.6 MB)
Interrupt:19 Base address:0x2000
-F "[: ]+"
参数:
-F // 分隔多列
"[: ]+" // 用":"和" "同时作为分隔符,"+"表示匹配多个
空格 | inet | addr | 192.168.57.145 | Bcast:192... |
---|---|---|---|---|
第一列 | 第二列 | 第三列 | 第四列 | 第五列 |
NR
参数:
NR==2 // 表示输出第二行
print
参数:
print $4 // 输出第四列
!!!EOF