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.
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:
sed G
# option: g G Copy/append hold space to pattern space.
G
nie 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///
, p
itp); pole wstrzymania zaczyna się puste i jest używane tylko przez niektóre polecenia.
G
Polecenie 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 G
skutecznie dodaje tylko nową linię do każdej przetwarzanej linii.
-e
ponieważ potrzebujemy tylko jednego argumentu polecenia.
Czy o to ci chodzi?
grep SPAM mail.log | while read -r line; do echo; echo $line; done
read -r
aby uniknąć traktowania znaków odwrotnego ukośnika jako specjalnych.
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.txt
lub edytor terminali, taki jak nano
Edycja: lub cp file.log log.txt
co jest oczywiście łatwiejsze i szybsze ... dzięki komentarzowi KeithB
cat
nie cp
?
cp
byłoby łatwiej i szybciej ... lol - Czytałem inne odpowiedzi do czynienia ze grep
i awk
tak napisałem mu cat
drogę, ale ja sprostowanie, że dzięki
whatever | sed G
powinny załatwić sprawę.