ฉันมีไฟล์ 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จำเป็นหรือไม่?