奇妙な印刷条件

奇妙な印刷条件

次の条件でラインを印刷してみてください。

入力例

Hello:world
Hello:worlds:
Hello:world:example

努力中 -

awk -F":" print $1 " + " $2 && if($3 != "") { " + " $3 }

したがって、予想される出力は次のようになります。

Hello + world
Hello + worlds
Hello + world + example

ベストアンサー1

空きスペースだけに気をつければ最後フィールドを使用している場合は、sed以下を使用する方が短くなります。

$ sed 's/:$//; s/:/ + /g' file
Hello + world
Hello + worlds
Hello + world + example

試したコマンドはawk次のように保存できます。

$ awk -F":" '{ print $1 " + " $2 ($3 != "" ? " + " $3 : "") }' file
Hello + world
Hello + worlds
Hello + world + example

OFSまたは(出力フィールド区切り記号)を使用して、次の操作を行います。

$ awk -F":" -v OFS=' + ' '{ print $1, $2 ($3 != "" ? OFS $3 : "") }' file
Hello + world
Hello + worlds
Hello + world + example

また否定的なテストを取除いて下さい:

$ awk -F":" -v OFS=' + ' '{ print $1, $2 ($3 == "" ? "" : OFS $3 ) }' file
Hello + world
Hello + worlds
Hello + world + example

おすすめ記事