이 명령에 printf와 print가 모두 있는 이유는 무엇입니까?

이 명령에 printf와 print가 모두 있는 이유는 무엇입니까?

공부하다가 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

printf단순히 with alone 으로 쓸 수도 있고 , just with printalone으로 쓸 수도 있습니다.

awk '{ printf "# %s\n" , $0  }'

개행 문자는 기본적으로 인쇄되지 않으므로 \n필요 합니다.printf

awk '{ print "# "$0  }'

관련 정보