이상한 인쇄 조건

이상한 인쇄 조건

다른 사람이 작성한 파일을 디버깅하던 중 다음 줄을 발견했습니다.

psql -U user -h $2 -p 5432 mydb -c "set search_path=$3;$4" | awk 'NR>3 {print l} {l=$0}'

나는 무엇을 모른다

awk 'NR>3 {print l} {l=$0}' 

이 라인 정말 괜찮나요? 이 줄이 무엇을 의미하는지 설명할 수 있는 사람이 있나요?{print l}

답변1

명령을 설명하는 간단한 입력:

$ seq 6 | awk 'NR>3 {print l} {l=$0}'
3
4
5
  • NR현재 레코드 번호의 값을 가지는 특수 변수입니다(이 경우 행 번호와 동일).
    • 이는 NR>3줄 번호가 3보다 크다는 것을 의미합니다.
  • {l=$0}$0현재 줄(특수 변수)의 내용을 사용자 정의 변수에 저장합니다 .l
  • NR>3 {print l}조건이 true이면 변수의 내용을 인쇄합니다.l

따라서 실제로 이 코드는 처음 두 줄과 마지막 줄을 제외한 입력의 모든 줄을 인쇄합니다.

관련 정보