AWK - 次の2行の先頭に前の行を追加します。

AWK - 次の2行の先頭に前の行を追加します。

次の文書があります。

Bob:
This is my line
This is also my line
Alfred:
What a great day!
What should we do!
Jess:
Its so hot
Lets go to the Beach

フォーマットは常に同じです。

speaker
line1
line2
speaker
line1
line2

追加行などはありませんでした。

各行の先頭に「スピーカー」があることを望みます。たとえば、次のようになります。

Bob: This is my line
Bob: This is also my line
Alfred: What a great day!
Alfred: What should we do!
Jess: Its so hot
Jess: Lets go to the Beach

awkを使用して各「n番目」行を抽出しようとしています。

awk '{if (NR % 3 == 1) print $0}'

しかし、次の2行の先頭に再度追加する方法がわかりません。

ご協力ありがとうございます

ベストアンサー1

awk 'NR%3==1{ name=$0; next } { print name, $0 }' file

条件がtrueの場合、レコードを変数に保存してレコードname処理を続行します。next

それ以外の場合は、name現在のレコードを印刷します。

おすすめ記事