나는 이 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
조건은 다음과 같습니다 . true
0이 아니므로 항상 다음으로 평가됩니다. 생략되었으므로 action
기본값이 구현됩니다. {print}
다음과 같이 생각할 수 있습니다.
awk -F"=" '
{OFS="="; gsub(",",";",$2)}
1!=0 {print}
'
답변3
1
모든 줄을 인쇄한다는 의미입니다.
awk 문은 다음과 같이 작성하는 것과 동일합니다.
awk -F"=" '{OFS="=";gsub(",",";",$2);print $0;}'