Her girişin genel yapıya sahip olduğu birçok giriş içeren büyük bir bibtex dosyası var
@ARTICLE{AuthorYear,
item = {...},
item = {...},
item = {...},
etc
}
(bazı durumlarda ARTICLE
farklı bir kelime olabilir örneğin BOOK
)
Ne yapmak istiyorum verilen AuthorYear ile girişleri ayıklamak ve yeni bir .bib dosyasına koymak için basit bir komut dosyası (tercihen sadece bir kabuk komut dosyası) yazmaktır.
Bir girişin ilk cümlesini AuthorYear'ın son cümlesini tek bir kapanışla tanıyabildiğimi }
ve belki de sed
girişi çıkarmak için kullandığımı hayal edebilirim , ancak bunu tam olarak nasıl yapacağımı bilmiyorum. Birisi bana bunu nasıl başaracağımı söyleyebilir mi?
Muhtemelen böyle bir şey olmalı
sed -n "/AuthorYear/,/\}/p" file.bib
Ancak bu }
, girişin ilk öğesindeki kapanış nedeniyle durur ve böylece bu çıktıyı verir:
@ARTICLE{AuthorYear,
item = {...},
Bu yüzden }
bir satırdaki tek karakter olup olmadığını ve bu durumda sadece 'sed' okumayı bırakıp bırakmadığımı bilmeliyim.
sed
hiç gerekli değil, sadece en kolay seçenek olacağını düşündüm. Biraz farklı bir kod çözdüm: sed -n "/AuthorYear/, /^ *\}/p"
Tam olarak istediğim şeyi yapıyor gibi görünüyor, }
varsa boşluklar için kapatma ve düzeltme
sed -n "/AuthorYear/,/\}$/p"
.$
Sembolü not edin .}
Bir bibitemin kapanışını yazdırmaması dışında iyi çalışır . Btw, kullanımısed
gerekli mi?