2つのあご受けファイルがあります。一部の項目は重複しており、重複した項目は段落にあるか、同じパターンで識別できます。
a.bib
良い
@InProceedings{Arranged,
author = {Transcribed by hofei Arranged and by hofei},
title = {ALL OF ME},
file = {:All of Me.pdf:PDF},
groups = {Solo Tab},
}
@InProceedings{P,
author = {P and = and V V and V V},
title = {ANGELS WE HAVE HEARD ON HIGH Transcribed by hofei},
file = {:Angels We Have Heard on High.pdf:PDF},
groups = {Solo Tab},
}
そしてb.bib
@InProceedings{Arranged,
author = {Transcribed by hofei Arranged and by hofei},
title = {ALL OF ME},
file = {:All of Me.pdf:PDF},
groups = {Solo Tab},
}
@InProceedings{,
title = {This Is My Father's World Standard Tuning Traditional Fast Tempo - “Thumbpicking” Style Arrangement by Mark Hanson},
year = {2005},
file = {:MyFathersWorld_p2.pdf:PDF},
groups = {Solo Tab},
}
私は知っている両方のファイルに重複した段落を表示するはい
$ awk -v RS="" '{gsub(/\n/," "); print}' a.bib b.bib | sort | uniq -c | grep -vE '^\s*1 '
2 @InProceedings{Arranged, author = {Transcribed by hofei Arranged and by hofei}, title = {ALL OF ME}, file = {:All of Me.pdf:PDF}, groups = {Solo Tab}, }
しかし、重複した項目を自動的に削除する方法はb.bib
?
答え1
行があったように、今段落がありました。 2つのファイルを解析し、最初のファイルの段落をハッシュに入れ、次に2番目のファイルが存在しない場合にのみ2番目の段落を印刷します。
awk -v RS="" -v ORS="\n\n" 'FNR==NR{a[$0]; next} !($0 in a)' a.bib b.bib
出力:
@InProceedings{,
title = {This Is My Father's World Standard Tuning Traditional Fast Tempo - “Thumbpicking” Style Arrangement by Mark Hanson},
year = {2005},
file = {:MyFathersWorld_p2.pdf:PDF},
groups = {Solo Tab},
}
空白文字があると重複した内容が失われる可能性がありますのでご注意ください。diff
結果を確認するためにいくつかを一緒に実行したい場合があります。