私の要件は間違いなく役に立ちますが、与えられた答えを理解することはできません。
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