1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| [root@bogon ~]# awk '{print $1}' test abc 123 [root@bogon ~]# awk '{printf $1}' test abc123[root@bogon ~]# # printf动作不会自动换行
[root@bogon ~]# awk '{printf "%s\n",$1}' test abc 123 # 使用格式替换符,不要忘记$1前面的逗号
[root@bogon ~]# awk 'BEGIN{printf "%s\n",1,2,3,4,5}' 1 [root@bogon ~]# awk 'BEGIN{printf "%s\n%s\n%s\n%s\n%s\n",1,2,3,4,5}' 1 2 3 4 5 # 在awk中,格式替换符的数量必须与传入的参数的数量相同。也就是格式替换符必须与需要格式化的参数一一对应。不可以像使用printf命令一样,一个格式替换符可以反复使用。
# 使用printf动作注意事项 # 1. 使用printf动作输出的文本不会换行,如果需要换行,可以在对应的"格式替换符"后加入"\n"进行转义。 # 2. 使用printf动作时,"指定的格式" 与 "被格式化的文本" 之间,需要用"逗号"隔开。 # 3. 使用printf动作时,"格式"中的"格式替换符"必须与 "被格式化的文本" 一一对应。
[root@bogon ~]# awk '{printf "第一列: %s 第二列: %s\n",$1,$2}' test 第一列: abc 第二列: 345 第一列: 123 第二列: klj [root@bogon ~]# awk -v FS="#" '{printf "第一列: %s 第二列: %s\n",$1,$2}' test1 第一列: aaa 第二列: dfa 第一列: aiew 第二列: adkf [root@bogon ~]# awk -v FS=":" 'BEGIN{printf "%-10s\t %s\n","用户名称","用户ID"}{printf "%-10s\t %s\n",$1,$3}' /etc/passwd 用户名称 用户ID root 0 bin 1 daemon 2 adm 3 lp 4 sync 5 shutdown 6 halt 7 mail 8 operator 11 games 12 ftp 14 nobody 99 systemd-network 192 dbus 81 polkitd 999 postfix 89 sshd 74 openvpn 998
|