Unix에서 awk를 사용하여 텍스트 파일의 홀수 필드를 인쇄하는 방법은 무엇입니까? [폐쇄]

Unix에서 awk를 사용하여 텍스트 파일의 홀수 필드를 인쇄하는 방법은 무엇입니까? [폐쇄]

내 요구 사항에는 확실히 도움이 되지만 주어진 답변을 이해할 수 없습니다.

awk -F\| '{s="";for (i=1;i<=NF;i+=2) {s=s?s FS $i:$i} print s}' file

이것은 무엇을 {s=s?s FS $i:$i} print s}합니까? 원하는 출력을 어떻게 인쇄합니까? 나는 이것이 삼항 연산자가 사용되고 있다는 것을 알고 있습니다. 하지만 표현식을 평가하고 출력을 인쇄하는 방법은 무엇입니까?

답변1

if-then-else로 생각해보세요

 {s=s?s FS $i:$i} 

다음과 같이 평가됨

 { if ( s != "" ) s=s FS $i ; ## i=3,5,7,...
   else s=$i ; } ## i=1

이것은 모호한 코드처럼 보입니다.

awk -F\| '{s="";for (i=1;i<=NF;i+=2) {s=s?s FS $i:$i} print s}' file

(가장 이해하기 쉬움)

awk -F\| '{s=$1;for (i=3;i<=NF;i+=2) {s=s FS $i} print s}' file

관련 정보