Come faccio ad aggiungere nuove righe tra le righe stampate sulla riga di comando?


30

I registri di posta sono incredibilmente difficili da leggere. Come potrei produrre una riga vuota tra ogni riga stampata sulla riga di comando? Ad esempio, supponiamo che stia eseguendo l'accesso al registro. In questo modo, più linee avvolte non vengono confuse.

Risposte:


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

Gnon viene spesso utilizzato, ma è utile per questo scopo. sed mantiene due spazi buffer: lo "spazio modello" e lo "spazio di attesa". Le linee elaborati da sed solito scorrono attraverso lo spazio modello come vari comandi operano sul suo contenuto ( s///, pecc); lo spazio di attesa inizia vuoto ed è utilizzato solo da alcuni comandi.

Il Gcomando aggiunge una nuova riga e il contenuto dello spazio di attesa allo spazio del motivo. Il programma sed di cui sopra non mette mai nulla nello spazio di attesa, quindi Gaggiunge effettivamente solo una nuova riga a ogni linea che viene elaborata.


3
-E non è necessario. tubazioni whatever | sed Gdovrebbe fare il trucco.
frabjous

@frabjous: Giusto, potremmo anche lasciare fuori dal -emomento che ci serve solo un singolo argomento di comando.
Chris Johnsen,

Posso darti tipo, +2? Unghie!
Christian Bongiorno,

ma viene mostrato solo in stdout, ma non lo salva
biolinh,

8

Usa awk per aggiungere una nuova riga in più. Questo ti consente anche di filtrare le cose che non vuoi.

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

4

Usa sed e sostituisci l'intera riga da sola più un carattere di nuova riga in più:

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

4
Una sostituzione sed leggermente più semplice sarebbe 's / $ / \ n /', anche se il comando 'G' di @Chris Johnsen è ancora più semplice.
Camh,

3

È questo ciò che cerchi?

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


Probabilmente vorrai utilizzarlo read -rper evitare di trattare i caratteri di barra rovesciata come speciali.
Chris Johnsen,

0

Se è per qualcosa di più di un semplice aspetto, preferisco inviarli a un file di testo e aprirli con un editor di testo in modo da poter impostare le linee da avvolgere o meno e fare ricerche facilmente ... ed eliminare le linee indesiderate e così via senza dover digitare molti comandi.

cat file.log > log.txt e gedit log.txto un editor di terminale come nano

Modifica: o cp file.log log.txtche è ovviamente più facile e veloce ... grazie al commento di KeithB


1
Perché cate no cp?
KeithB,

sicuramente cpsarebbe più facile e veloce! ... lol - stavo leggendo le altre risposte grepe awkquindi l'ho scritto in questo catmodo, ma lo sto correggendo, grazie
laurent
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.