awk는 n번째부터 마지막까지 모든 열을 인쇄합니다.

awk는 n번째부터 마지막까지 모든 열을 인쇄합니다.

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

https://stackoverflow.com/questions/2961635/using-awk-to-print-all-columns-from-the-nth-to-the-last?answertab=votes#tab-top

다음 코드도 예상대로 작동합니다.

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$2NF$1$2$0OFS

관련 정보