列値を行に変換するawkコマンドについて学びます。

列値を行に変換するawkコマンドについて学びます。

このコマンドは列値を行に変換します。注文する:

awk -s1=" " '{S=S?S OFS s1 $0 s1:s1 $0 s1} END{print S}' OFS=,  Input_file

例:

1
2
3

次に変換:

1, 2, 3

このコマンドを理解するのに役立つ人はいますか?

ベストアンサー1

次の構文を知る必要があります。

var = bool ? true_action : false_action

これは…条件式

それと

if (bool) { var = true_action } else { var = false_action }

だからこれ:

 S=S?S OFS s1 $0 s1:s1 $0 s1

これと同じ:

if (S) { S=S OFS s1 $0 s1 } else { S = s1 $0 s1 }
  • if (S)割り当てられている場合はTrueSなので、コマンドが最初に呼び出されたときにのみFalseです。
  • var1 var2 var3文字列をs1空白、OFS現在の状態、,およびS以前に割り当てられた項目に関連付けるだけです。
  • END{print S}S最後の行以降に印刷されます。

おすすめ記事