sed的使用
由图可知:sed 后面包含了四部分的内容 参数 范围 操作 操作的文件
参数:
-n:忽略执行过程,只输出结果,不影响源文件数据。
-r:支持扩展正则
-i:修改源文件数据
范围:
4 4,5 1~2 2,+3 /正则/ 等
操作指令
p:输出
d:删除
s:替换
a:追加
i:插入
c:替换
w:输出到其他的文件中
例:sed -n ‘1,2 w a.txt’ file
awk使用
awk常用内置变量:
$0 文本当前行的全部内容
$1 文本的第1列
$2 文件的第2列
$3 文件的第3列,依此类推
NR 文件当前行的行号
NF 文件当前行的列数(有几列)
例:查看IP地址
[root@server1 ~]# ifconfig br0 | sed -n '2p' | awk '{print $2}'
172.25.0.254
[root@server1 ~]# ifconfig br0 | grep 'inet ' |awk '{print $2}'
172.25.0.254
例:查看用户的个数
[root@server1 ~]# sed -n '$=' /etc/passwd
52
例:打印磁盘剩余空间
[root@server1 ~]# df -h | awk '{print $4}'
Avail
969M
例:打印用户及所用的shell
[root@server1 ~]# awk -F: '{print $1,$7}' /etc/passwd
root /bin/bash
bin /sbin/nologin
daemon /sbin/nologin
adm /sbin/nologin
例:awk提取本机的网络流量、获取远程失败的IP地址
[root@server1 ~]# ifconfig br0 |awk '/RX p/{print $5}'
414944
[root@server1 ~]# ifconfig br0 |awk '/TX p/{print $5}'
5914
[root@server1 ~]# awk '/Failed/{print $4}' /var/log/secure-20210624
server1
server1
server1
server1
server1
例:awk查看解释器为bash用户的个数
[root@server1 ~]# awk -F: 'BEGIN{x=0}/bash$/{x++}END{print x}' /etc/passwd
3
例:awk查看用户名,UID,用户家目录
[root@server1 ~]# awk -F: 'BEGIN{print "User\tUID\tHome"}{print $1 "\t" $3 "\t" $6}END{print "total",NR,"lines"}' /etc/passwd
User UID Home
root 0 /root
bin 1 /bin
daemon 2 /sbin
adm 3 /var/adm