linux中awk的使用

本文详细介绍了Linux中awk命令的使用,包括打印文件的特定段落,通过分隔符进行字段操作,以及结合正则表达式进行数据筛选。提供了多个实用示例,如根据分隔符打印指定字段,匹配特定字符串,以及进行数值比较等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

awk -F ‘:’ ‘{print $1}’ test.txt
将test.txt中第1段打印出来

awk ‘{print $0}’ test.txt
将test.txt中所有段打印出来

awk -F ‘:’ ‘{print $1,$2,$3}’ test.txt
将test.txt中第1,2,3段打印出来

awk -F ‘:’ ‘{print $1"#"$2"#"$3}’ test.txt
将test.txt中第1,2,3段以#号隔开并打印出来

[root@allen awk]# awk ‘/oo/’ test.txt
root❌0:0:root:/root:/bin/bash
lp❌4:7:lp:/var/spool/lpd:/sbin/nologin
mail❌8:12:mail:/var/spool/mail:/sbin/nologin
operator❌11:0:operator:/root:/sbin/nologin
postfix❌89:89::/var/spool/postfix:/sbin/nologin
匹配,将test.txt文档中含有oo字符段打印出来

[root@allen awk]#awk -F ‘:’ ‘$1 ~ /oo/’ test.txt
root❌0:0:root:/root:/bin/bash
将第一段含有oo字符段打印出来

awk -F ‘:’ ‘$1 ~ /o+/’ test.txt
将文档中含有oo字符段全部打印出来

awk -F ‘:’ ‘/root|user/ {print $0}’ text.txt
将 text文档中含有root user字符段全部打印出来

awk -F ‘:’ ‘$3==0’ test.txt
第三段等于0

awk -F ‘:’ ‘$3>=1000 {print $1}’ test.txt
第三段大于等于1000

awk -F ‘:’ ‘$7!="/sbin/nologin" {print $0}’ text.txt
第七段不属于/sbin/nologin

[root@allen awk]# awk -F ‘:’ ‘$3<$4’ text.txt
adm❌3:4:adm:/var/adm:/sbin/nologin
lp❌4:7:lp:/var/spool/lpd:/sbin/nologin
mail❌8:12:mail:/var/spool/mail:/sbin/nologin
games❌12?games:/usr/games:/sbin/nologin
ftp❌14:50:FTP User:/var/ftp:/sbin/nologin

[root@allen awk]# awk -F ‘:’ ‘$3==$4’ text.txt
root❌0:0:root:/root:/bin/bash
bin❌1:1:bin:/bin:/sbin/nologin
daemon❌2:2:daemon:/sbin:/sbin/nologin
nobody❌99:99:Nobody:/:/sbin/nologin
systemd-network❌192:192:systemd Network Management:/:/sbin/nologin
dbus❌81:81:System message bus:/:/sbin/nologin
sshd❌74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix❌89:89::/var/spool/postfix:/sbin/nologin

[root@allen awk]# awk -F ‘:’ ‘$3>“5” && $3<“8”’ text.txt
shutdown❌6:0:shutdown:/sbin:/sbin/shutdown
halt❌7:0:halt:/sbin:/sbin/halt
sshd❌74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

[root@allen awk]# awk -F ‘:’ ‘$3>1000 || $7=="/sbin/nologin"’ text.txt
bin❌1:1:bin:/bin:/sbin/nologin
daemon❌2:2:daemon:/sbin:/sbin/nologin
adm❌3:4:adm:/var/adm:/sbin/nologin
lp❌4:7:lp:/var/spool/lpd:/sbin/nologin
mail❌8:12:mail:/var/spool/mail:/sbin/nologin
operator❌11:0:operator:/root:/sbin/nologin
games❌12?games:/usr/games:/sbin/nologin
ftp❌14:50:FTP User:/var/ftp:/sbin/nologin
nobody❌99:99:Nobody:/:/sbin/nologin
systemd-network❌192:192:systemd Network Management:/:/sbin/nologin
dbus❌81:81:System message bus:/:/sbin/nologin
polkitd❌999:998:User for polkitd:/:/sbin/nologin
sshd❌74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix❌89:89::/var/spool/postfix:/sbin/nologin
chrony❌998:996::/var/lib/chrony:/sbin/nologin
第三段大于1000并且第七段包含/sbin/nologin

[root@allen awk]# awk -F ‘:’ ‘$3>1000 || $7 ~ /bash/’ text.txt
root❌0:0:root:/root:/bin/bash
第三段大于1000并且第七段匹配bash

[root@allen awk]# awk -F ‘:’ ‘{OFS="#"} $3>1000 || $7 ~ /bash/ {print $1,$3,$7}’ text.txt
root#0#/bin/bash
第三段大于1000,中间以#隔开,打印第1,3,7段

[root@allen awk]# awk -F ‘:’ ‘{OFS="#"} {print $1,$3,$7}’ text.txt
root#0#/bin/bash
bin#1#/sbin/nologin
daemon#2#/sbin/nologin
adm#3#/sbin/nologin
lp#4#/sbin/nologin
sync#5#/bin/sync
shutdown#6#/sbin/shutdown
halt#7#/sbin/halt
mail#8#/sbin/nologin
operator#11#/sbin/nologin
games#12#/sbin/nologin
ftp#14#/sbin/nologin
nobody#99#/sbin/nologin
systemd-network#192#/sbin/nologin
dbus#81#/sbin/nologin
polkitd#999#/sbin/nologin
sshd#74#/sbin/nologin
postfix#89#/sbin/nologin
chrony#998#/sbin/nologin
中间以#隔开,打印第1,3,7段

[root@allen awk]# awk -F ‘:’ ‘{OFS="#"} {if ($3>1000) {print $1,$2,$3,$4}}’ test.txt
user1#x#1001#1001
user2#x#1002#1002
user3#x#1003#1003

awk -F ‘:’ ‘{print NR":"$0}’ test.txt
打印所有的行并以数字显示

awk -F ‘:’ ‘{print NF":"$0}’ test.txt
打印所有的行并以段数显示

awk -F ‘:’ ‘NR<=10’ test.txt
打印前十行

awk -F ‘:’ ‘NR<=10 && $1 ~ /root|sync/’ test.txt
打印前十行中含有root和sync字符过滤出来

[root@allen awk]# head -n 3 /awk/test.txt |awk -F ‘:’ ‘$1=“root”’
root x 0 0 root /root /bin/bash
root x 0 0 root /root /bin/bash
root x 1 1 bin /bin /sbin/nologin

= 赋值
[root@allen awk]# head -n 3 /awk/test.txt |awk -F ‘:’ ‘{OFS=":"}$1=“root”’
root❌0:0:root:/root:/bin/bash
root❌0:0:root:/root:/bin/bash
root❌1:1:bin:/bin:/sbin/nologin

[root@allen awk]# head -n 3 /awk/test.txt |awk -F ‘:’ ‘$1==“root”’
root❌0:0:root:/root:/bin/bash
root❌0:0:root:/root:/bin/bash

== 等于

[root@allen awk]# awk -F ‘:’ ‘{(tot=tot+$3)}; END {print tot}’ test.txt
9216
第三段求和

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值