Как добавить новые строки между строками, напечатанными в командной строке?

30

Почтовые журналы невероятно трудно читать. Как я могу вывести пустую строку между каждой строкой, напечатанной в командной строке? Например, скажите, что я выполняю поиск в журнале. Таким образом, несколько обернутых строк не путаются.

xenoterracide
источник

Ответы:

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

Gне часто используется, но хорош для этой цели. sed поддерживает два буферных пространства: «пространство шаблона» и «пространство хранения». Строки, обрабатываемые sed, обычно проходят через пространство шаблона, поскольку различные команды работают с его содержимым ( s///, pи т. Д.); пространство удержания начинается пустым и используется только некоторыми командами.

Команда Gдобавляет новую строку и содержимое области удержания в пространство образца. Вышеприведенная программа sed никогда ничего не помещает в пространство удержания, поэтому Gэффективно добавляет просто новую строку к каждой обрабатываемой строке.

Крис Джонсен
источник
3
-Е не обязательно. трубопровод whatever | sed Gдолжен сделать свое дело.
безумно
@frabjous: Правильно, с таким же успехом можно обойтись, -eпоскольку нам нужен только один аргумент команды.
Крис Джонсен
Могу ли я дать вам, как, +2? Гвозди это!
Кристиан
но, это только показ в stdout, но не сохранить его
biolinh
8

Используйте awk, чтобы добавить дополнительный перевод строки. Это также позволяет вам отфильтровывать вещи, которые вам не нужны.

awk '{print $0,"\n"}' | less
KeithB
источник
4

Используйте sed и замените всю строку отдельно, а также один дополнительный символ новой строки:

grep foo /var/log/maillog | sed -e "s/^.*$/&1\n/"
fschmitt
источник
4
Несколько более простой заменой sed будет 's / $ / \ n /', хотя команда @Chris Johnsen 'G' еще проще.
Camh
3

Это то, что вы после?

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

Nifle
источник
Вы, вероятно, захотите использовать, read -rчтобы не обрабатывать символы обратной косой черты как особые.
Крис Джонсен
0

Если это больше, чем просто просмотр, я предпочитаю отправлять их в текстовый файл и открывать в текстовом редакторе, чтобы вы могли задать перенос строк или нет и выполнять поиск легко ... и удалять ненужные строки и так далее без приходится вводить много команд.

cat file.log > log.txt и gedit log.txtили редактор терминала, как нано

Изменить: или cp file.log log.txtчто, конечно, проще и быстрее ... благодаря комментарию KeithB

Laurent
источник
1
Почему catи нет cp?
KeithB
конечно cp, будет проще и быстрее! ... смеется - я читал другие ответы, связанные с, grepи awkпоэтому я написал это catтак, но я исправляю это, спасибо
Лоран