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가 지적했듯이 검색이 긍정적이므로 해당 줄이 인쇄됩니다.

관련 정보