Почему моя многострочная строка perl заменяет добавление пустой строки?

unrar x '*.rar' 

это работает для меня, у меня была такая же проблема.

если я опущу 'unrar попытается добавить все файлы в одну командную строку

например: у меня 1.rar 2.rar 3.rar если я сделаю

unrar x * .rar

передача команды linux будет

unrar x 1.rar  2.rar 3.rar 

и приведет к ошибке , но если я использую 'как это

unrar x '*.rar' 

, переданная команда будет

unrar x 1.rar
unrar x 2.rar
.......
0
29.04.2019, 23:19
2 ответа

Провозившись с этим целый день, я понял это почти сразу после того, как задал вопрос здесь...

Я смог исправить это, включив новую строку в критерии поиска команды perl. похоже, что он просто оставил новую строку, которая уже была в строке после закрывающего тега xml, а затем добавил дополнительную из команды «кошка».

perl -i -p0e 's;<values>.*<\/values>\n;`cat replace.xml`;sge' test.xml

Изменить :Благодаря ответу mosvy я нашел другое решение, которое будет работать, если заменяемый текст не имеет завершающей новой строки, как это было в моем случае:

perl -i -p0e 's;<values>.*<\/values>;`head -c -1 replace.xml`;sge' test.xml

использование head вместо cat предотвращает вывод дополнительной новой строки

0
28.01.2020, 03:46
$ perl -00pe '
    chop($r //= join "", <STDIN>);
    s|<values>.*</values>|$r|sg;
  ' test.xml < replace.xml
0
28.01.2020, 03:46

Теги

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