フィールド1を別の行に分割し、作成された各新しい行に対してコピーされたフィールド2を保持する方法

フィールド1を別の行に分割し、作成された各新しい行に対してコピーされたフィールド2を保持する方法

入力する:

注:2つの列はタブで区切られ、通常のスペースは列2の単語を区切ります。

1   the mouse is dead
2   hit the wall
3   winter lasts forever

希望の出力:

1   the
1   mouse
1   is
1   dead
2   hit
2   the
2   wall
3   winter
3   lasts
3   forever

awkこの道は行く道ですか?

ベストアンサー1

最初のフィールドは行のフィールド数を保持し、where変数を使用してフィールドにアクセスでき、$1ループはCとほぼ同じように機能します。だから:NF$ii

$ awk '{for (i = 2; i <= NF; i++) printf "%s\t%s\n", $1, $i} ' < blah
1       the
1       mouse
...

(フィールド区切り文字でスペースとタブを区別しません。)

おすすめ記事