내 요구 사항에는 확실히 도움이 되지만 주어진 답변을 이해할 수 없습니다.
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