https://www.gnu.org/software/gawk/manual/gawk.htmlawk '{print $0}' marks.txt
섹션 1.1.2 입력 파일 없이 awk 실행을 토대로 이것이 echo처럼 작동한다는 것을 이해할 수 있습니다 . 그것은 돌아올 것이다
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89
다음 코드도 예상대로 작동합니다.
awk '{print $0}' marks.txt | awk '{print $2 "\t" $3 "\t"$4}'
awk '{$1=""; print $0}' marks.txt
나는 지금도 그것이 직관적으로 이해가 된다는 것을 이해하지 못합니다 .
답변1
$1=""; print $0
인쇄하기 전에 첫 번째 필드를 지우고 전체 행을 다시 계산하십시오. 이 내용은 다음과 같이 기록됩니다.지역을 바꾸다GAWK 매뉴얼의 섹션:
필드 값이 변경되면(인식된 대로
awk
) 이전 필드가 있던 새 필드를 포함하도록 입력 레코드의 텍스트가 다시 계산됩니다. 즉,$0
변경된 필드를 반영하도록 변경합니다.
이는 GNU 확장이 아닌 AWK의 모든 구현에 해당됩니다.AWK 프로그래밍 언어이 동작은 다음과 같이 설명됩니다.
이는 중요합니다. 할당되거나 대체되면 , 등이
$0
변경되고 다시 계산됩니다. 마찬가지로 , 등 중 하나가 변경되면 구분된 필드를 사용하여 다시 작성됩니다.$1
$2
NF
$1
$2
$0
OFS