awk에서 $0=$1은 무엇을 의미하나요?

awk에서 $0=$1은 무엇을 의미하나요?

다음과 같은 입력 텍스트 파일(sample_simple.txt)이 있다고 가정해 보겠습니다.

3 1 10 1 6
9 4 2  4 1
9 2 2  2 1

다음 명령을 사용하면 awk '$0=$1" "$1*$2" "$3*$4' sample_simple.txt다음과 같은 출력을 얻습니다.

3 3 10
9 36 8
9 18 4

그런 다음 다음 명령을 사용하면 awk '$1*$2" "$3*$4' sample_simple.txt입력 파일에서 아무 것도 변경되지 않습니다.

3 1 10 1 6
9 4 2  4 1
9 2 2  2 1

명령 간의 유일한 변경 사항은 입니다 '$0=$1'. 누구든지 이것을 설명할 수 있습니까?

답변1

실제로는 그렇지 않습니다 $0=$1. 더 비슷하다고 생각해

$0 = ($1" "$1*$2" "$3*$4)

그래서

$0=$1" "$1*$2" "$3*$4

문자열 연결 결과를 $1" "$1*$2" "$3*$4변수에 할당 $0하고 기본 작업을 수행하는 {print $0}반면

 $1*$2" "$3*$4

$1*$2$3*$4(사이에 공백 포함 ) 의 결과를 연결하고 결과가 비어 있지 않은 문자열이기 때문에 " "기본 작업을 수행합니다 . {print $0}값은 $0수정되지 않습니다.

답변2

갑자기

  • $0전체 라인입니다
  • 라인은 즉석에서 변경될 수 있습니다

따라서

  • $1" "$1*$2" "$3*$43개의 필드 를 생성 $1하고 $1*$2$3*$4
  • $0=결과는 줄에 배치되고 암시적으로 인쇄됩니다 (편집 참조).

편집하다 :

을 생략하면 $0=출력 라인이 변경되지 않습니다.

Steeldriver가 지적했듯이 검색이 긍정적이므로 line은 prinetd입니다.

관련 정보