ฉันมีไฟล์ bibtex ขนาดใหญ่ที่มีหลายรายการที่แต่ละรายการมีโครงสร้างทั่วไป
@ARTICLE{AuthorYear,
item = {...},
item = {...},
item = {...},
etc
}
(ในบางกรณีARTICLE
อาจเป็นคำอื่นเช่นBOOK
)
สิ่งที่ฉันต้องการจะทำคือเขียนสคริปต์ง่ายๆ (โดยเฉพาะอย่างยิ่งสคริปต์ shell) เพื่อแยกรายการที่มี AuthorYear ที่กำหนดและใส่ลงในไฟล์. ibib ใหม่
ฉันสามารถจินตนาการได้ว่าฉันสามารถจำประโยคแรกของรายการโดย AuthorYear และประโยคสุดท้ายด้วยการปิดครั้งเดียว}
และอาจใช้sed
เพื่อแยกรายการ แต่ฉันไม่รู้วิธีการทำสิ่งนี้อย่างแท้จริง มีคนบอกฉันได้ไหมว่าฉันจะทำสิ่งนี้ได้อย่างไร
มันน่าจะเป็นอะไรซักอย่าง
sed -n "/AuthorYear/,/\}/p" file.bib
แต่นั่นจะหยุดเนื่องจากการปิด}
ในรายการแรกของรายการจึงให้ผลลัพธ์นี้:
@ARTICLE{AuthorYear,
item = {...},
ดังนั้นฉันจึงจำเป็นต้องรู้ว่า}
ตัวละครตัวนี้เป็นตัวเดียวในบรรทัดหรือไม่และมีเพียง 'sed' ที่จะหยุดอ่านเมื่อเป็นกรณีนี้
sed
ไม่จำเป็นเลยฉันแค่คิดว่ามันจะเป็นตัวเลือกที่ง่ายที่สุด ฉันคิดรหัสที่แตกต่างออกไปเล็กน้อย: sed -n "/AuthorYear/, /^ *\}/p"
ซึ่งดูเหมือนว่าจะทำสิ่งที่ฉันต้องการอย่างแน่นอนรวมถึงการปิด}
และแก้ไขช่องว่างหากมี
sed -n "/AuthorYear/,/\}$/p"
เท่านั้น: . สังเกต$
สัญลักษณ์ มันทำงานได้ดียกเว้นว่ามันจะไม่พิมพ์ปิด}
การบรรณานุกรม Btw การใช้งานsed
จำเป็นหรือไม่?