Мне нужно заменить все пробелы между >
и </
подчеркиванием.
Это на самом деле не будет делать то, что вы хотите, потому что, например, в
some thing <phrase>a phrase</phrase> some thing else <phrase>other stuff</phrase>
^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
подстроки "между >
и </
" охватывают больше, чем вы думаете (отмечено ^
выше).
Я думаю, что самый простой способ выразить ваши требования в Perl - это
perl -pe 's{>[^<>]*</}{ $& =~ tr/ /_/r }eg'
Здесь [^<>]
используется, чтобы убедиться, что соответствующая подстрока не может содержать <
или >
(в частности, она не может совпадать с другими тегами <phrase>
).
Если это слишком читабельно, вы также можете сделать
perl '-pes;>[^<>]*</;$&=~y> >_>r;eg'