2016-03-25 12 views
2

nerede olabileceğini iki desenleri arasındaki tüm metni seçmek için nasıluç desen de bir başlangıç ​​deseni

BREAK A 
abc 
BREAK B 
bcd 
BREAK A 
cde 
BREAK A 

Ne yapmak isteyen dahil BREAK A ve BREAK, arasındaki her şeyi seçmek için aşağıdaki dosya Sağlar ki hat BREAK A böylece istenen çıkış I başlangıç ​​ve eşleşen bir bölümün sonunda her iki aynı hat kullanabilir olasılığı için hesap bulabilirsiniz awk örneklerinin

BREAK A 
abc 
BREAK A 
cde 
BREAK A 

None.

P.S. Bunun önemli olup olmayacağından emin değilim, fakat gerçek dosyada BREAK satırın başında görünürken, satırın ortasında A ve B görünür.

cevap

2

Sen kullanabilirsiniz: Biz bir çizgide BREAK A bulduğunda set ve diğer BREAK bir çizgide bulunduğunda reset alır alır değere geçiş olarak p kullandığınız

awk '/^BREAK/ && !/^BREAK A/{p=0} /^BREAK A/{p=1} p' file 

BREAK A 
abc 
BREAK A 
cde 
BREAK A 

. sed ile

+1

Bir çekicilik gibi çalıştım. Teşekkürler! –

0

:

$ sed '/BREAK [^A]/,/BREAK A/{/BREAK A/!d}' file 
BREAK A 
abc 
BREAK A 
cde 
BREAK A 
-2

Önce regex "BREAK A" içeren baskı hatları, noktalı virgül tablolar arasındaki ayırıcı olarak çalışır diyor. Ardından baskı hatları ya bitiyor ya da c ile başlıyor.

awk '/BREAK A/;/c$|^c/' file 
    BREAK A 
    abc 
    BREAK A 
    cde 
    BREAK A 
+0

Lütfen cevaba bazı açıklamalar ekleyin. Bu yeni kullanıcılara yardımcı olacaktır. – Jayan