sed、awk學習

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

相關文章
相關標籤/搜索