awk 스크립트 끝에 있는 "1"은 무엇을 의미합니까?

awk 스크립트 끝에 있는 "1"은 무엇을 의미합니까?

나는 이 awk대본을 읽고 있어요

awk -F"=" '{OFS="=";gsub(",",";",$2)}1'

1그 최종 목적이 무엇인지 궁금합니다 .

답변1

프로그램은 awk중괄호 밖에 있는 조건과 중괄호 안에 있는 동작으로 구성된 일련의 조건-작업 쌍입니다. 조건은 0 또는 빈 문자열로 평가되면 false로 간주되고, 그 외의 경우에는 true로 간주됩니다(초기화되지 않은 변수는 컨텍스트에 따라 0 또는 빈 문자열이므로 false입니다). 조건이나 동작을 암시할 수 있습니다. 조건이 없는 중괄호(예: 시작)는 참 조건이 있는 것으로 간주되어 적중 시 항상 실행되며, 동작이 없는 조건은 조건이 충족되는 경우에만 해당 내용을 인쇄합니다.

스크립트 끝에는 1아무 작업도 수행하지 않는(항상 true) 조건이 있으므로 각 줄에서 기본 작업을 수행하여 해당 줄을 인쇄합니다(중괄호 안의 이전 작업에 의해 수정되었을 수 있음).

답변2

나는 이러한 유형의 단축키가 구문 분석 방식을 혼란스럽게 하고 오해하게 만들기 때문에 정말 좋아하지 않습니다. 이런 내용을 읽으면 앞의 문장이 수정되고 있다고 awk -F"=" '{OFS="=";gsub(",",";",$2)}1'생각할 수도 있습니다 . 또는 기술적으로 잘못된 별칭이라고 1생각할 수도 있습니다 .1{print}

실제로는 1완전히 별개의 진술입니다. 다음과 같이 명령문을 분리할 수 있습니다.

awk -F"=" '
{OFS="="; gsub(",",";",$2)}
1
'

각 awk 문의 형식은 입니다 condition {action}. {action}지정하지 않은 경우 기본 작업은 입니다 {print}. ( condition제공하지 않을 경우 기본 조건이 사용됩니다 true.)

1조건은 다음과 같습니다 . true0이 아니므로 항상 다음으로 평가됩니다. 생략되었으므로 action기본값이 구현됩니다. {print}다음과 같이 생각할 수 있습니다.

awk -F"=" '
{OFS="="; gsub(",",";",$2)}
1!=0 {print}
'

답변3

1모든 줄을 인쇄한다는 의미입니다.

awk 문은 다음과 같이 작성하는 것과 동일합니다.

awk -F"=" '{OFS="=";gsub(",",";",$2);print $0;}'

관련 정보