2015-05-27 3 views
1

Это мой файл, я хочу создать пустые строки после каждого символа существующей строки, я знаю, как удалять пустые строки в файлах linux, используя sed/^ $/filename, у меня есть большой файл, как это и я не хочу, чтобы создать пустую строку вручнуюКак создать пустые строки в файле linux

$ cat filename 
Perl 5.18 is not binary compatible with Perl 5.16 and earlier 
releases. In particular, do not attempt to use extensions or PPM 
packages built for ActivePerl 1600 and older series builds with 
ActivePerl 1800 series builds and vice versa. Please check 
"Incompatible Changes" in perl5180delta for known source level 
incompatibilities between the Perl 5.18 releases and the earlier 
release series 

Ожидаемый выход:

Perl 5.18 is not binary compatible with Perl 5.16 and earlier releases. In particular, do not attempt to 

use extensions or PPM packages built for ActivePerl 1600 and older series builds with ActivePerl 1800 

series builds and vice versa. Please check "Incompatible Changes" in perl5180delta for known source 

level incompatibilities between the Perl 5.18 releases and the earlier release series 
+1

Я не получаю ожидаемый результат, заданное вами форматирование - qui я ужасен, и я не могу найти логику между вашим входом и ожидаемым выходом. Если вы хотите добавить строку blanck после каждого возврата каретки, вы можете сделать это 'sed '/ $/\ n \ n /' filename' (заменить каждый конец строки ($) на два возврата каретки (\ n)) – Tensibai

+0

@Tensibai Я думаю, что они хотят добавить новую линию между тем, где она заканчивается на своем терминале, поэтому с колонками – 123

+0

Спасибо @Tensibai, после удаления одного «\ n» моего выходного файла понадобилась одна пустая строка, в которой нет пустых строк в файл, который я хочу создать там, чтобы лучше просматривать исходные коды –

ответ

2

в AWK

awk '1;NF{print ""}' file 

1 оценивает true и поэтому печатает линию.
NF Проверяет, что по крайней мере одно поле (или символ) на линии, поэтому не будет печатать двойные пробелы.
{print ""} печатает пустую строку.


Кроме того, если вы хотите печатать пустые строки между ними каждой линии зависит от ширины терминала, то вы можете использовать

awk -vCol="$(tput cols)" ' 
    {while(length($0)>Col){print substr($0,0,Col)"\n";$0=substr($0,Col+1) }}1' file 
+0

Well Saar, Спасибо, Не могли бы вы объяснить мне аргументы подробно –

+0

Добавлено объяснение – 123

+0

Замечательный человек, он работает на Solaris так же хорошо? –

0
sed '/[[:print:]]/ a\ 
' YourFile 

или (в зависимости от вашего определения характера существующей линии)

sed '/[^[:space:][:cntrl:]]/ a\ 
' YourFile 
Смежные вопросы