Jak dodać nowe linie między wierszami wydrukowanymi w wierszu poleceń?


30

Dzienniki poczty są niezwykle trudne do odczytania. Jak mogę wypisać pustą linię między każdą linią wydrukowaną w linii poleceń? Powiedzmy na przykład, że przeglądam dziennik. W ten sposób wiele owiniętych linii nie jest mylonych.

Odpowiedzi:


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

Gnie jest często używany, ale jest dobry do tego celu. sed utrzymuje dwie przestrzenie buforowe: „przestrzeń wzoru” i „przestrzeń wstrzymania”. Linie przetwarzane przez sed zazwyczaj przepływa przez przestrzeń wzór jak różne polecenia działają na jego zawartość ( s///, pitp); pole wstrzymania zaczyna się puste i jest używane tylko przez niektóre polecenia.

GPolecenie dołącza do nowej linii i zawartość miejsca przechowywania do przestrzeni wzorca. Powyższy program sed nigdy nie umieszcza niczego w przestrzeni wstrzymania, więc Gskutecznie dodaje tylko nową linię do każdej przetwarzanej linii.


3
-E nie jest konieczne. Rurociągi whatever | sed Gpowinny załatwić sprawę.
frabjous

@frabjous: Racja, równie dobrze można zrezygnować, -eponieważ potrzebujemy tylko jednego argumentu polecenia.
Chris Johnsen

Mogę ci dać, +2? Przygwoździć to!
Christian Bongiorno,

ale jest pokazywany tylko na standardowym ekranie, ale go nie zapisuj
biolinh

8

Użyj awk, aby dodać dodatkową nową linię. Pozwala to również odfiltrować rzeczy, których nie chcesz.

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

4

Użyj sed i zastąp samą linię plus jeden dodatkowy znak nowej linii:

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

4
Nieco prostszym podstawieniem sed byłby „s / $ / \ n /”, chociaż polecenie „G” @Chrisa Johnsena jest jeszcze prostsze.
camh

3

Czy o to ci chodzi?

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


Prawdopodobnie będziesz chciał użyć tej opcji, read -raby uniknąć traktowania znaków odwrotnego ukośnika jako specjalnych.
Chris Johnsen

0

Jeśli chodzi o coś więcej niż tylko wygląd, wolę wysłać je do pliku tekstowego i otworzyć za pomocą edytora tekstu, abyś mógł ustawić linie do zawijania lub nie i łatwo wyszukiwać ... oraz usuwać niechciane linie i tak dalej bez wpisując wiele poleceń.

cat file.log > log.txt i gedit log.txtlub edytor terminali, taki jak nano

Edycja: lub cp file.log log.txtco jest oczywiście łatwiejsze i szybsze ... dzięki komentarzowi KeithB


1
Dlaczego catnie cp?
KeithB

na pewno cpbyłoby łatwiej i szybciej ... lol - Czytałem inne odpowiedzi do czynienia ze grepi awktak napisałem mu catdrogę, ale ja sprostowanie, że dzięki
Laurent
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.