前の行に共通のテキストが含まれている場合、前の行と現在の行を維持する方法は?
次の基本ファイルがあります。
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