2つのファイルがあります。ファイルには構造化データが含まれています。以下はその例です。
article 1 title
article 1 body line 1
article 1 body line 2
+++
article 2 title
article 2 body line 1
article 2 body line 2
article 2 body line 3
+++
article 3 title
article 3 body line 1
article 3 body line 2
+++
article 4 title
article 4 body line 1
article 4 body line 2
article 4 body line 3
ご覧のとおり、レコード+++
区切り記号です。各レコードの最初の行はタイトルであり、他のすべての行はそのレコードの内容です。他のファイルは、ヘッダーリストを含む単純なテキストファイルです。たとえば、
article 1 title
article 3 title
article 4 title
私が望むのは、2番目のファイルにリストされているタイトルのレコードです。したがって、前述の例の場合、予想される結果は次のとおりです。
article 1 title
article 1 body line 1
article 1 body line 2
+++
article 3 title
article 3 body line 1
article 3 body line 2
+++
article 4 title
article 4 body line 1
article 4 body line 2
article 4 body line 3
私の問題を解決することが可能かもしれないと思いますが、awk
方法がわかりません。
私が試したことは次のとおりです。
awk 'BEGIN{RS="(\r?\n)?\+{3}(\r?\n)?"; FS="\r?\n"; ORS="+++"} NR==FNR{a[$0];next} ...' title_list.txt data.txt
私の問題は、RS
2つのファイルが異なるはずですが、どのように機能させるのかわからないということです。
ベストアンサー1
ファイルごとにRSなどの変数を個別に設定できます。たとえば、
$ awk 'NR==FNR{a[$0];next} $1 in a' RS='\r?\n' title_list.txt RS='+++\r?\n' FS='\r?\n' ORS='+++\n' data.txt
article 1 title
article 1 body line 1
article 1 body line 2
+++
article 3 title
article 3 body line 1
article 3 body line 2
+++
article 4 title
article 4 body line 1
article 4 body line 2
article 4 body line 3
+++