タブ区切りファイルの列に基づいて新しい行を追加する

タブ区切りファイルの列に基づいて新しい行を追加する

次のようにタブ区切りのファイルがあります。

211845  032
215979  002   071
217783  143   156   169
219750  111

タブで区切られた複数の項目がある行の場合は、最初の列の値に基づいて新しい行を追加したいと思います。これが私が望む結果です:

211845  032
215979  002
215979  071
217783  143
217783  156
217783  169
219750  111

どんなアイデアでもありがとうございます。このアイデアのためパニックになりました。

ベストアンサー1

、を使用してawk各行の最初のフィールドの後にあるフィールドを繰り返し、各フィールドに対して新しい行を印刷します。

awk -F'\t' -v OFS='\t' '{for (i=2;i<=NF;i++) print $1,$i}' file

出力:

211845  032
215979  002
215979  071
217783  143
217783  156
217783  169
219750  111

これにより、空の行またはフィールドが1つしかない行を削除できます。これはおそらく欲しいものです。現在の状態に保つには、次のように変更します。

awk -F'\t' -v OFS='\t' 'NF<2 {print; next} {for (i=2;i<=NF;i++) print $1,$i}' file

おすすめ記事