sed、awk命令学习



nl 查看文件并显示行号

nl /etc/passwd

     1  root:x:0:0:root:/root:/bin/bash

     2  bin:x:1:1:bin:/bin:/sbin/nologin


sed 参数:

a 新增  在a后面行可以接字符串,而新的字符串在下一行显示。

c 替换  1至3行 为 test

d 删除  d后面通常不接任何东西

i 插入   第n行前追加

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