勉強してfail2ban
このような命令を見つけました。私はawk
以前それをやったことがなく、ただ働いていましたsed
。なぜ両方があり、そこにいるのか理解できませprintf
んprint
。
awk '{ printf "# "; print; }' /etc/fail2ban/jail.conf | sudo tee /etc/fail2ban/jail.local
なぜ両方がそこにありますか?
ところで、もしご存知であればコメントでsedバージョンを共有してください。
答え1
1つ目printf
は、入力ファイルの各行に文字を追加してから、その#
句を使用して変更された行(以前に追加された行)をコンソールに印刷することです。awk
$0
#
print
そのうちの1つを無視してコマンドラインから実行して、何が何をしているのかを確認できます。
seq 1 5 | awk '{ printf "# "; print; }'
# 1
# 2
# 3
# 4
# 5
printf
単に with alone で書くことも、 just with print
alone で書くこともできます。
awk '{ printf "# %s\n" , $0 }'
改行文字はデフォルトでは印刷されないため、\n
必要です。printf
awk '{ print "# "$0 }'