Komut satırında yazdırılan satırların arasına nasıl yeni satır eklerim?


30

Posta kayıtlarını okumak inanılmaz zor. Komut satırında basılan her satır arasında nasıl boş satır çıktırabilirim? Örneğin, kütüğü elden tutuyorum. Bu şekilde, çok sayıda sarılı çizginin kafası karışmaz.

Yanıtlar:


52
sed G 
# option: g G    Copy/append hold space to pattern space.

Gsık kullanılmaz, ancak bu amaç için güzeldir. sed , iki tampon alanını korur: “desen alanı” ve “tutma alanı”. Tarafından işleme hatları sed çeşitli komutlar (içeriği üzerinde işlem olarak genellikle model alanı akar s///, pvb); tutma alanı boş başlar ve yalnızca bazı komutlar tarafından kullanılır.

GKomut Yeni satır ve desen uzaya tutma alanı içeriğini ekler. Yukarıdaki sed programı hiçbir zaman tutma alanına Gkoymaz , bu nedenle işlenen her satıra yalnızca yeni bir satır ekler.


3
-E gerekli değil. boru whatever | sed Ghile yapmak gerekir.
frabjous

@ frabjous: Pekala, o -ezamandan beri ayrılabiliriz, çünkü orada sadece bir komut argümanına ihtiyacımız var.
Chris Johnsen

+2 gibi verebilir miyim? Çiviler!
Christian Bongiorno

ama, sadece
stdout'ta

8

Ekstra bir yeni satır eklemek için awk kullanın. Bu, istemediğiniz şeyleri filtrelemenize de izin verir.

awk '{print $0,"\n"}' | less

4

Sed kullanın ve tüm satırı kendi başına artı bir ekstra yeni satır karakteri ile değiştirin:

grep foo /var/log/maillog | sed -e "s/^.*$/&1\n/"

4
@Chris Johnsen'in 'G' komutu daha da basit olsa da, biraz daha basit bir susturma 's / $ / \ n /' olacaktır.
camh

3

Peşinde olduğun şey bu mu?

grep SPAM mail.log | while read -r line; do echo; echo $line; done


Büyük olasılıkla read -rters eğik çizgi karakterlerini özel olarak ele almamak için kullanmak isteyeceksiniz .
Chris Johnsen

0

Bakmaktan başka bir şey yoksa, onları bir metin dosyasına göndermeyi ve bir metin düzenleyici ile açmayı tercih ederim, böylece satırları sarmak veya koymamak için kolayca ayarlayabilir ve kolayca arama yapabilirsiniz ... istenmeyen satırları vb. çok fazla komut yazmanız gerekiyor.

cat file.log > log.txt ve gedit log.txtveya nano gibi bir terminal editörü

Düzenleme: ya da cp file.log log.txtelbette ki elbette daha kolay ve hızlı ... KeithB yorum sayesinde


1
Neden catve değil cp?
KeithB

elbette cpdaha kolay ve daha hızlı olurdu! ... lol - Ben ilgilenen diğer cevapları okuyordum grepve awkbu catşekilde yazdım ama bunu düzeltirim, teşekkürler
laurent
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.