Shell三剑客:awk(内部变量)
2023-12-21 22:31:03
一、$0 :完整的输入记录
[root@localhost ~]# awk -F: '{print $0}' passwd.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin10
?
二、ARGC :命令行参数的数目
[root@localhost ~]# awk 'BEGIN {print ARGC}' passwd.txt
2
?
三、ARGIND :命令行中当前文件的位置(从0开始算)
[root@localhost ~]# awk 'BEGIN {print ARGIND}' passwd.txt
0
?
四、ARGV :包含命令行参数的数组
[root@localhost ~]# awk 'BEGIN {print ARGV[0]}' passwd.txt
awk
[root@localhost ~]# awk 'BEGIN {print ARGV[1]}' passwd.txt
passwd.txt
?
五、CONVFMT :数字转换格式(默认值为%.6g)ENVIRON环境变量关联数组
[root@localhost ~]# awk 'BEGIN {print CONVFMT}' passwd.txt
%.6g
?
?六、FILENAME:当前文件名
[root@localhost ~]# awk '{print FILENAME}' passwd.txt
passwd.txt
passwd.txt
passwd.txt
passwd.txt
passwd.txt
passwd.txt
passwd.txt
passwd.txt
passwd.txt
passwd.txt
?
七、FNR :各文件分别计数的行号
[root@localhost ~]# awk -F: '{print FNR,$0}' passwd.txt /etc/hosts
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 operator:x:11:0:operator:/root:/sbin/nologin10
1 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
2 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
?
八、FS :字段分隔符(默认是任何空格)
[root@localhost ~]# awk -F'[:\t]' '{print $1,$2,$3}' passwd.txt
root x 0
bin x 1
daemon x 2
adm x 3
lp x 4
sync x 5
shutdown x 6
halt x 7
mail x 8
operator x 11
?
九、IGNORECASE:如果为真,则进行忽略大小写的匹配
[root@localhost ~]# awk -F: '{print IGNORECASE}' passwd.txt
0
0
0
0
0
0
0
0
0
0
?
?十、NF :一条记录的字段的数目
[root@localhost ~]# awk -F: '{print $0,NF}' passwd.txt
root:x:0:0:root:/root:/bin/bash 7
bin:x:1:1:bin:/bin:/sbin/nologin 7
daemon:x:2:2:daemon:/sbin:/sbin/nologin 7
adm:x:3:4:adm:/var/adm:/sbin/nologin 7
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 7
sync:x:5:0:sync:/sbin:/bin/sync 7
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 7
halt:x:7:0:halt:/sbin:/sbin/halt 7
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin 7
operator:x:11:0:operator:/root:/sbin/nologin10 7
?
十一、NR :已经读出的记录数,就是行号,从1开始
[root@localhost ~]# awk -F: '{print NR,$0}' passwd.txt /etc/hosts
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 operator:x:11:0:operator:/root:/sbin/nologin10
11 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
12 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
?
十二、OFMT:数字的输出格式(默认值是%.6g)
[root@localhost ~]# awk -F: '{print OFMT}' passwd.txt
%.6g
%.6g
%.6g
%.6g
%.6g
%.6g
%.6g
%.6g
%.6g
%.6g
?
十三、OFS :输出记录分隔符(输出换行符),输出时用指定的符号代替换行符
[root@localhost ~]# awk -F: '/root/{print $1,$2,$3,$4}' passwd.txt
root x 0 0
operator x 11 0
?
十四、RLENGTH:由match函数所匹配的字符串的长度
[root@localhost ~]# awk '{print RLENGTH}' passwd.txt
0
0
0
0
0
0
0
0
0
0
?
?十五、ORS :输出记录分隔符(默认值是一个换行符)
[root@localhost ~]# awk -F: 'BEGIN{ORS=""} {print $0}' passwd.txt
root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologin10
?
十六、RS :记录分隔符(默认是一个换行符)
[root@localhost ~]# awk 'BEGIN{RS=":"} {print $0}' passwd1.txt
root
x
0
0
root
/root
/bin/bash
[root@localhost ~]# awk -F: 'BEGIN{RS=""} {print $0}' passwd.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin10
?
?
文章来源:https://blog.csdn.net/weixin_73783595/article/details/135139848
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!