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


30

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

Ответы:


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

4

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

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

4
Несколько более простой заменой sed будет 's / $ / \ n /', хотя команда @Chris Johnsen 'G' еще проще.
Camh

3

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

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


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

0

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

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

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


1
Почему catи нет cp?
KeithB

конечно cp, будет проще и быстрее! ... смеется - я читал другие ответы, связанные с, grepи awkпоэтому я написал это catтак, но я исправляю это, спасибо
Лоран
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.