Разбор файла и вставка новой строки после каждого вхождения - PullRequest
0 голосов
/ 09 марта 2020

В системе Unix я пытаюсь добавить новую строку в файл, используя sed или perl, но, похоже, что-то упущен.

Предположим, в моем файле несколько строк текста. всегда заканчивается таким образом {TNG:}}${1:F01.

Я пытаюсь найти способ добавить новую строку после }$, таким образом {1 всегда должен начинаться с новой строки.

Я пробовал, сбегая $ подпишите, используя это:

perl -e '$/ = "\${"; while (<>) { s/\$}\{$/}\n{/; print; }' но это не работает.

Любые идеи будут оценены.

Ответы [ 2 ]

1 голос
/ 09 марта 2020

попробуйте:

sed 's/{TNG:}}\$/&\n/' file > newfile

По умолчанию sed будет использовать BRE, то есть {} s являются буквальными символами. Но мы должны уйти от $.

kent$  cat f
{TNG:}}${1:F01.

kent$  sed 's/{TNG:}}\$/&\n/' f
{TNG:}}$
{1:F01.
0 голосов
/ 09 марта 2020

С perl:

$ cat input.txt
line 1 {TNG:}}${1:F01
line 2 {TNG:}}${1:F01
$ perl -pe 's/TNG:\}\}\$\K/\n/' input.txt 
line 1 {TNG:}}$
{1:F01
line 2 {TNG:}}$
{1:F01

(Ознакомьтесь с опциями -p и -n в perlrun и используйте их вместо попыток сделать то, что они делают в Однострочник)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...