在学习时fail2ban
我遇到了这个命令。我awk
以前从未与 合作过,只与sed
.我不明白为什么同时存在printf
和print
,那里:
awk '{ printf "# "; print; }' /etc/fail2ban/jail.conf | sudo tee /etc/fail2ban/jail.local
为什么两者都在那里?
顺便说一句,如果您知道,我邀请您在评论中分享 sed 版本。
答案1
第一种printf
是将字符附加到由 表示的#
输入文件的每一行,然后使用该子句将修改后的行(之前添加的行)打印到控制台。awk
$0
#
print
您可以忽略其中一个并在命令行上运行它以查看哪个执行什么操作。
seq 1 5 | awk '{ printf "# "; print; }'
# 1
# 2
# 3
# 4
# 5
它也许可以简单地写成 with printf
alone 或 just with print
alone 作为
awk '{ printf "# %s\n" , $0 }'
您需要换行符,\n
因为printf
默认情况下不打印它。
awk '{ print "# "$0 }'