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

関連情報