আমার অনেকগুলি এন্ট্রি সহ একটি বিবিটেক্স ফাইল রয়েছে যেখানে প্রতিটি এন্ট্রির সাধারণ কাঠামো থাকে
@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"
।$
প্রতীকটি নোট করুন । এটি সূক্ষ্মভাবে কাজ করে, এটি কোনও}
বিবিটেমের সমাপ্তি মুদ্রণ করে না । বিটিডব্লিউ,sed
প্রয়োজনীয় ব্যবহার কি?