sed、awk命令學習shell
nl 查看文件並顯示行號bash
nl /etc/passwdide
1 root:x:0:0:root:/root:/bin/bash學習
2 bin:x:1:1:bin:/bin:/sbin/nologinspa
sed 參數:字符串
a 新增 在a後面行能夠接字符串,而新的字符串在下一行顯示。it
c 替換 1至3行 爲 testast
d 刪除 d後面一般不接任何東西class
i 插入 第n行前追加test
s 替換 替換匹配到的內容
[root@bogon ~]# nl passwd | sed '2,5d' 刪除文件2-5行
1 root:x:0:0:root:/root:/bin/bash
6 sync:x:5:0:sync:/sbin:/bin/sync
[root@bogon ~]# nl passwd |sed -n '2p' 打印文件第2行
2 bin:x:1:1:bin:/bin:/sbin/nologin
[root@bogon ~]# nl passwd |sed '2i test111111111111111' 第2行前面追加一行
1 root:x:0:0:root:/root:/bin/bash
test111111111111111
2 bin:x:1:1:bin:/bin:/sbin/nologin
root@bogon ~]# nl passwd |sed '2a test111111111111111' 第2行後面追加一行
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
test111111111111111
[root@bogon ~]# nl passwd |sed '2,5c test111 2-5 number' 第2-5行替換爲test111 2-5 number
1 root:x:0:0:root:/root:/bin/bash
test111 2-5 number
6 sync:x:5:0:sync:/sbin:/bin/sync
[root@bogon ~]# nl passwd |sed -n '/root/p' 顯示匹配到的行
1 root:x:0:0:root:/root:/bin/bash
11 operator:x:11:0:operator:/root:/sbin/nologin
[root@bogon ~]# ifconfig |sed -n '2p'|sed 's/^.*addr://'|sed 's/Bcast.*//' 過濾IP地址
192.168.118.128
聯合編輯
[root@bogon ~]# nl passwd |sed -e '3,$d' -e 's/bash/testshall/'
1 root:x:0:0:root:/root:/bin/testshall
2 bin:x:1:1:bin:/bin:/sbin/nologin
awK
[root@bogon ~]# last -n 5|awk '{print $1}' 打印第1列
root
root
root
root
[root@bogon ~]# cat passwd |awk -F ':' '{print $1 "\t" $7}' 打印第1列和第7列並用tab隔開
root /bin/bash
bin /sbin/nologin
daemon /sbin/nologin
adm /sbin/nologin
lp /sbin/nologin
[root@bogon ~]# head -n 5 passwd |awk -F ':' 'BEGIN{print "name,shell"} {print $1 "," $7} END {print "end,line"}' 打印用戶和默認shell
name,shell
root,/bin/bash
bin,/sbin/nologin
daemon,/sbin/nologin
[root@bogon ~]# awk -F : 'BEGIN{count=0;}{name[count]=$1;count++;};END{for(i=0;i<NR;i++) print i,name[i]}' passwd
0 root
1 bin
2 daemon
3 adm
4 lp
5 sync
顯示文件passwd 文件名FILENAME 已讀的記錄數(行數)NR 瀏覽記錄的域的個數(列數)NF 顯示完整的行內信息$0