Perl 如何修改匹配的模式
只是想知道在Perl one liner中是否有一种方便的方法来修改匹配的模式变量。例如,在字符串Perl 如何修改匹配的模式,perl,sed,Perl,Sed,只是想知道在Perl one liner中是否有一种方便的方法来修改匹配的模式变量。例如,在字符串abcdef中,我想使用如下命令将def替换为e(输出abce): echo "abcdef" | perl -pne 's/(def)/{command that trims first and last character of $1 and returns it as a string for perl to use it as a replacement}/' 使用这样的功能来执行各种格式
abcdef
中,我想使用如下命令将def
替换为e
(输出abce):
echo "abcdef" | perl -pne 's/(def)/{command that trims first and last character of $1 and returns it as a string for perl to use it as a replacement}/'
使用这样的功能来执行各种格式化任务是很容易的。我们可以在sed中这样做吗?这在Perl中很容易,带有
/e
标志:
echo 'abcdef' | perl -pe 's/(def)/substr $1, 1, -1/e'
e
告诉perl将替换部分解析为代码块,而不是字符串。你可以在里面放任意代码
但是你的具体任务(修剪第一个和最后一个角色)也可以这样做:
echo 'abcdef' | perl -pe 's/d(e)f/$1/'
(另外,
perl-p
已经暗示了-n
。不需要同时指定两者。)如果您的整个问题描述都是关于perl的,为什么要询问sed?