Я хотел бы взять вывод команды bash (в данном случае grep) и вставить пустую строку через строку:
not
like
this ...
but
like
this!
Как это сделать в bash?
решение1
Есть много способов сделать это для текстовых файлов. Самый простой, наверное, это
$ sed G filename
решение2
Использование pr
из coreutils
:
$ grep '' file | pr -Td
not
like
this ...
(обратите внимание, что этоделаетдвойной интервал в последней строке - в отличие, скажем, sed '$!G'
от ). Из man pr
:
-d, --double-space
double space the output
-T, --omit-pagination
omit page headers and trailers, eliminate any pagination by form
feeds set in input files
решение3
Начнем с файла вроде:
$ cat >file
not
like
this ...
sed будет работать:
$ sed 's/$/\n/' file
not
like
this ...
Так будет awk:
$ awk 1 ORS='\n\n' file
not
like
this ...
1
— это зашифрованное сокращение awk для print-the-line, ORS='\n\n'
сообщающее awk о необходимости разделять выходные строки не одним, а двумя символами новой строки.
Более
Более короткая команда sed, как предложеностальной драйвер, является:
sed '$!G' file
Команда G
добавляет новую строку иудерживайте пространстводо концапространство шаблона. Поскольку по умолчанию пространство удержания пусто, это приводит к добавлению дополнительной новой строки в конце каждой строки. Префикс $!
сообщает sed делать это во всех строкахкромепоследний.
решение4
Test
10
20
30
Output
perl -pe "s/$/\n/" test
10
20
30