タイトルと詳細レコードをリンクする必要があります。
注:このファイルには2つ以上のヘッダーレコードがあり、ヘッダー数は動的です。次の出力ファイルMerge.txtをインポートする必要があります。
タイトルと詳細の最後のフィールドに基づいて、2つの別々のファイルに生成された詳細履歴とタイトルをマージする必要があります。
入力する:
タイトル.txt
20180731 HD0000000000000000000000007AAAA
20180731 HD0000000000000000000000003AAAB
20180731 HD0000000000000000000000002AAAC
20180731 HD0000000000000000000000004AAAD
詳細.txt
20180731 1AAAA
20180731 2AAAA
20180731 3AAAA
20180731 4AAAA
20180731 5AAAA
20180731 6AAAA
20180731 7AAAA
20180731 1AAAB
20180731 2AAAB
20180731 3AAAB
20180731 1AAAC
20180731 2AAAC
20180731 1AAAD
20180731 2AAAD
20180731 3AAAD
20180731 4AAAD
出力:
マージ.txt
20180731 HD0000000000000000000000007AAAA
20180731 1AAAA
20180731 2AAAA
20180731 3AAAA
20180731 4AAAA
20180731 5AAAA
20180731 6AAAA
20180731 7AAAA
20180731 HD0000000000000000000000003AAAB
20180731 1AAAB
20180731 2AAAB
20180731 3AAAB
20180731 HD0000000000000000000000002AAAC
20180731 1AAAC
20180731 2AAAC
20180731 HD0000000000000000000000004AAAD
20180731 1AAAD
20180731 2AAAD
20180731 3AAAD
20180731 4AAAD
答え1
次のコードを試してください。
rev Header.txt Detail.txt | awk ' /DH/{$4=1}1' FS="" OFS="" | sort | awk ' /DH/{$4="A"}1' FS="" OFS="" | rev | column -t > Merge.txt
出力:
20180731 HD0000000000000000000000007AAAA
20180731 1AAAA
20180731 2AAAA
20180731 3AAAA
20180731 4AAAA
20180731 5AAAA
20180731 6AAAA
20180731 7AAAA
20180731 HD0000000000000000000000003AAAB
20180731 1AAAB
20180731 2AAAB
20180731 3AAAB
20180731 HD0000000000000000000000002AAAC
20180731 1AAAC
20180731 2AAAC
20180731 HD0000000000000000000000004AAAD
20180731 1AAAD
20180731 2AAAD
20180731 3AAAD
20180731 4AAAD
答え2
ヘッダー自体にグループの終了条件が含まれていることを確認しました。したがって、ヘッダー行を読み取り、最後のフィールドが現在のヘッダーと一致するまで詳細行の印刷を開始します。
awk '
function getheader( h) {
getline h < "Header.txt"
return h
}
BEGIN {want_header = 1}
want_header {
head = getheader()
print head
want_header = 0
}
{print}
head ~ "0*" $NF "$" {want_header = 1}
' Detail.txt
20180731 HD0000000000000000000000007AAAA
20180731 1AAAA
20180731 2AAAA
20180731 3AAAA
20180731 4AAAA
20180731 5AAAA
20180731 6AAAA
20180731 7AAAA
20180731 HD0000000000000000000000003AAAB
20180731 1AAAB
20180731 2AAAB
20180731 3AAAB
20180731 HD0000000000000000000000002AAAC
20180731 1AAAC
20180731 2AAAC
20180731 HD0000000000000000000000004AAAD
20180731 1AAAD
20180731 2AAAD
20180731 3AAAD
20180731 4AAAD