Saya memiliki file bibtex besar dengan banyak entri di mana setiap entri memiliki struktur umum
@ARTICLE{AuthorYear,
item = {...},
item = {...},
item = {...},
etc
}
(dalam beberapa kasus ARTICLE
mungkin kata yang berbeda misalnya BOOK
)
Yang ingin saya lakukan adalah menulis skrip sederhana (sebaiknya hanya skrip shell) untuk mengekstraksi entri dengan AuthorYear yang diberikan dan meletakkannya di file .bib baru.
Saya dapat membayangkan bahwa saya dapat mengenali kalimat pertama dari sebuah entri oleh AuthorYear dan yang terakhir dengan satu penutup }
dan mungkin digunakan sed
untuk mengekstrak entri tersebut, tetapi saya tidak benar-benar tahu bagaimana melakukan ini secara tepat. Dapatkah seseorang memberi tahu saya bagaimana saya akan mencapai ini?
Mungkin harus seperti itu
sed -n "/AuthorYear/,/\}/p" file.bib
Tapi itu berhenti karena penutupan }
item pertama dari entri sehingga memberikan hasil ini:
@ARTICLE{AuthorYear,
item = {...},
Jadi saya perlu mengenali apakah }
ini satu-satunya karakter pada satu baris dan hanya memiliki 'sed' berhenti membaca ketika ini terjadi.
sed
tidak perlu sama sekali, saya hanya berpikir itu akan menjadi pilihan termudah. Saya telah menemukan kode sed -n "/AuthorYear/, /^ *\}/p"
yang sedikit berbeda: yang tampaknya melakukan persis apa yang saya inginkan, termasuk menutup }
dan mengoreksi spasi jika ada
sed -n "/AuthorYear/,/\}$/p"
. Perhatikan$
simbolnya. Ini berfungsi dengan baik, kecuali bahwa itu tidak mencetak penutupan}
bibitem. Btw, apakahsed
perlu menggunakan ?