다음과 같은 입력 텍스트 파일(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*$4
3개의 필드를 생성$1
하고$1*$2
$3*$4
$0=
결과는 줄에 입력되고암시적으로 인쇄됩니다(편집 참조).
편집하다:
생략하면 $0=
출력 라인이 변경되지 않습니다.
Steeldriver가 지적했듯이 검색이 긍정적이므로 해당 줄이 인쇄됩니다.