Вы можете довольно легко избавиться от grep
и awk
.
svn diff | perl -wnl -e '/\(revision/ or next; m|(\S+)/(\S+)|; print "$1/Test$2";'
Я изменил -p на -n.-p означает while (<>) { <your code>; print $_; }
, а -n - это то же самое, но без print
, поскольку в новой версии вместо него явно указан print
.
Вместо подстановки s///
я использовал m//
образец соответствия.Я изменил разделитель на |
, чтобы избежать косой черты (причина синдрома наклоняющейся зубочистки).Вы можете использовать практически любой знак пунктуации, который вам нужен.
\S
аналогичен .
, но соответствует только непробельным символам.Ваши .*
в шаблоне фактически совпадали со всеми фрагментами строки до и после косой черты, но новый шаблон соответствует только пути к файлу.Поскольку +
является «жадным», первый ($1
) получит больше строки, когда в пути будет несколько косых черт, так же, как и в вашем шаблоне подстановки.