Это очень легко сделать с помощьюperl6
:
perl6 -pe 's:g/<:punct-[-@_%]>+//' file
<:punct-[-@_%]>
будет соответствовать любому знаку пунктуации, кроме -@_%
. :g
— это переключатель global
(, аналогичный s/foo/bar/ g
в perl5 или sed)Чтобы можно было сравнивать ответы (, а также из-за лени ), я повторно использую пример ввода @RomanPerekhrest:
.!?,'/\"()[]^* @-$%
.!?,'/\"()[]^* @ sdfsd %
as,,d//asd a?sd %% --@_ _asdasdad$
sdfsdf %''%!% 2 + 2 = (?)
Итак, эта строка:
perl6 -pe 's:g/<:punct-[-@_%]+[^]>+//' file
Дает:
^ @-$%
^ @ sdfsd %
asdasd asd %% --@_ _asdasdad$
sdfsdf %%% 2 + 2 =
Обратите внимание, что он отличается от ответа, данного @RomanPerekhrest. Если вы считаете, что ^
, =
или +
также должны быть включены, вы можете использовать следующую строку:
perl6 -pe 's:g/<:punct-[-@_%]+[^+=]>+//' file
Выход будет таким же:
@-$%
@ sdfsd %
asdasd asd %% --@_ _asdasdad$
sdfsdf %%% 2 2
Вы можете сделать это с помощью расширения фигурной скобки:
mv /long/path/to/file/{old,new}.txt