найдите и замените новую строку-запятую на запятую-новую строку

Я только что нашел это по usubgdconf-editor

enter image description here

1
07.11.2019, 22:03
4 ответа

Я придумал это с помощью GNUsed:

sed -Ee 's/^[,]*(.*)$/\1,/' -e '$s/,$//' file

Или замена в файле:

sed -i -Ee 's/^[,]*(.*)$/\1,/' -e '$s/,$//' file

Начало строки с 0 или более вхождениями,

^[,]*

Захват шаблона оттуда до конца строки:

(.*)$

Замените захваченным шаблоном и добавьте ,в конце:

\1, 

Удалить ,в последней строке:

-e '$s/,$//'
1
27.01.2020, 23:40

I simply want to swap the comma and the newline

Делая буквально то же самое с Perl:

perl -0 -pe 's/\n,/,\n/g' file.txt
0
27.01.2020, 23:40

С помощью sed -с использованием цикла N... P;Dдля поддержки 2-строчного буфера -:

$ sed -e '$!N;s/\n,/,\n/' -e 'P;D' file
blah blah blah,
more blah blah blah,
even more blah blah blah
0
27.01.2020, 23:40

Конечно, самым быстрым и точным решением является:

tr '\n,' ',\n'  < file

Это при условии, что нет других,(как в вашем образце ).

Если это проблема, используйте (GNU)sed:

sed -z 's/\n,/,\n/g' file

Если вас беспокоит размер файла, (он не помещается в память, )используйте Perl.

0
27.01.2020, 23:40

Теги

Похожие вопросы