2011-01-10 18 views
5

Yalnızca üçlü boş satırları kaldırmak için sed kullanımı nasıldır? i sonuç ben bu
MyText.txtYalnızca üçlü boş satırları kaldırmak için sed kullanımı nasıldır?

 
line1 

line2 


line3 
line4 

benzemek istiyorum sed kullanımı ile

MyText.txt

 
line1 

line2 


line3 



line4 

: Örneğin

ile çift boş satırları silebilir
 
sed -i '/^$/{ 
N 
/^\n$/D 
}' MyText.txt 

Ancak amacım üçlü boş satırları ve yalnızca üçlü boş satırları silmek.

Herhangi bir yardım çok takdir edilecektir.

cevap

4

Bu kadar basit:

sed '1N;N;/^\n\n$/d;P;D' 
+0

bu çok daha kısa, thx –

0

Aşağıdaki kod sadece üç (ne az ne de fazla) ardışık boş satırlar kaldırır:

$ printf "%s\n" foo "" bar "" "" baz "" "" "" cow "" "" "" "" moe | 
     sed ' 
     /^$/{ 
      N; 
      /^\n$/{ 
       N; 
       /^\n\n$/{ 
        $ d; 
        N; 
        s/\n\n\n\(.\)/\1/ 
       } 
      } 
     }' 
foo 

bar 


baz 
cow 




moe 
+0

Bir çekicilik gibi çalış, thx –

1

O sed değil, ancak bu yapabilecekleriniz daha bir sürü daha kısa sed:

$ printf 'a\nb\n\nc\n\n\nd\n' | 
    perl -e 'undef $/; $_ = <>; s/\n\n\n/\n/g; print' 
a 
b 

c 
d 
olarak
1

Eğer awk çözümleri izin verirseniz, i yapabileceği t böyle:

awk -v RS='\n\n\n\n' 1 Text.txt 
İlgili konular