Як додати нові рядки між рядками, надрукованими в командному рядку?


30

Журнали пошти неймовірно важко читати. Як я міг вивести порожній рядок між кожним рядком, надрукованим у командному рядку? Наприклад, скажіть, що я греблю журнал. Таким чином, кілька загорнутих ліній не плутають.

Відповіді:


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

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

GКоманда додає нову рядок і вміст трюму до шаблону. Наведена вище програма sed ніколи нічого не містить у просторі утримування, тому Gефективно додає новий рядок до кожного обробленого рядка.


3
Не потрібен. трубопроводи whatever | sed Gповинні зробити трюк.
frabjous

@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 /", хоча команда "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або редактор терміналів, як nano

Редагувати: або 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.