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