다른 사람이 작성한 파일을 디버깅하던 중 다음 줄을 발견했습니다.
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
따라서 실제로 이 코드는 처음 두 줄과 마지막 줄을 제외한 입력의 모든 줄을 인쇄합니다.