मेरे पास कई प्रविष्टियों के साथ एक बड़ी bibtex फ़ाइल है जहां प्रत्येक प्रविष्टि में सामान्य संरचना है
@ARTICLE{AuthorYear,
item = {...},
item = {...},
item = {...},
etc
}
(कुछ मामलों में ARTICLEएक अलग शब्द हो सकता है जैसे BOOK)
मैं जो करना चाहूंगा, उसे दिए गए ऑथर के साथ प्रविष्टियां निकालने के लिए एक सरल स्क्रिप्ट (अधिमानतः सिर्फ एक शेल स्क्रिप्ट) लिखी जाएगी और उन लोगों को एक नई .bib फ़ाइल में डाल दिया जाएगा।
मैं कल्पना कर सकता हूं कि मैं ऑथराइर द्वारा प्रविष्टि के पहले वाक्य को और अंतिम को सिंगल क्लोजिंग द्वारा पहचान सकता हूं }और शायद sedप्रविष्टि को निकालने के लिए उपयोग कर सकता हूं, लेकिन मुझे वास्तव में नहीं पता कि यह कैसे करना है। क्या कोई मुझे बता सकता है कि मैं इसे कैसे हासिल करूंगा?
यह शायद कुछ ऐसा होना चाहिए
sed -n "/AuthorYear/,/\}/p" file.bib
लेकिन }प्रविष्टि के पहले आइटम में बंद होने के कारण यह बंद हो जाता है, इस प्रकार यह आउटपुट देता है:
@ARTICLE{AuthorYear,
item = {...},
इसलिए मुझे यह पहचानने की जरूरत है कि क्या }एक पंक्ति में एकमात्र चरित्र है और केवल जब मामला होता है तो 'सेड' पढ़ना बंद कर देते हैं।
sedबिल्कुल भी आवश्यक नहीं है, मैंने सोचा कि यह सबसे आसान विकल्प होगा। मुझे कुछ अलग कोड का पता चला है: sed -n "/AuthorYear/, /^ *\}/p"जो मैं चाहता हूं, ठीक उसी तरह से करना चाहता हूं जिसमें }रिक्त स्थान को बंद करना और सही करना शामिल है यदि कोई हो
sed -n "/AuthorYear/,/\}$/p":।$प्रतीक पर ध्यान दें । यह ठीक काम करता है, सिवाय इसके कि यह}एक बीबिटेम के समापन को प्रिंट नहीं करता है । Btw,sedआवश्यक का उपयोग है?