前の行に共通のテキストが含まれている場合、前の行と現在の行を維持する方法は?

前の行に共通のテキストが含まれている場合、前の行と現在の行を維持する方法は?

前の行に共通のテキストが含まれている場合、前の行と現在の行を維持する方法は?

次の基本ファイルがあります。

Hello_world
Anna
Frank
Jeremy
Hello_earth
Jessie
James

次の3つの出力ファイルが必要です。

出力ファイル1(以前のhelloの文字列のみ)

Hello_world,Anna
Hello_earth,Jessie

出力ファイル2(文字列のみがあり、以前のhelloはありません)

Frank
Jeremy
James

出力ファイル3(以前のhelloを持つ文字列のみ、古いhello行を持たない文字列にはHiが含まれています)

Hello_world,Anna
Hello_earth,Jessie
Hi,Frank
Hi,Jeremy
Hi,James

grepとawkを使ってみましたが、目的の結果は得られません。

ベストアンサー1

追加の作業は次のとおりですawk

awk -v OFS=, '
  /^Hello_/{
    getline name
    print $0, name > "file1"
    print $0, name > "file3"
    next
  }
  {
    print > "file2"
    s = s "Hi" OFS $0 ORS
  }
  END {
   printf "%s", s > "file3"
  }' < input

おすすめ記事