我无法理解给出的答案,尽管这肯定有助于满足我的要求。
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