做 shell 脚本 Sed 和 Perl:使用 & 作为匹配的字符串

Cai*_* Yu 0 perl applescript sed

输入: abc720p

所需的输出: abc720p_xxx

按照指南:使用 & 作为匹配的字符串

在 AppleScript 中,如果我使用 sed:

set oriT to "abc720p def720p" 
set oriT to do shell script "echo " & 
quoted form of oriT & " | sed -e 's/abc720p/&_xxx/g'"
Run Code Online (Sandbox Code Playgroud)

输出是正确的: abc720p_xxx def720p

但是如果我使用 Perl:

set oriT to "abc720p def720p" 
set oriT to do shell script "echo " &
quoted form of oriT & " | perl -CIOED -p -e 's/abc720p/&_xxx/g'"
Run Code Online (Sandbox Code Playgroud)

输出错误: &_xxx def720p

在我的上下文中,我必须在 AS 中使用 Perl 来完成这项工作(如 sed 中的 &)。我不能使用“perl -CIOED -p -e 's/abc720p/abc720p_xxx/g”。

我不知道我是否可以用 Perl 实现这一点。

cho*_*oba 5

在 Perl 中,语法略有不同:使用$&而不是&.

perl -CIOED -p -e 's/abc720p/$&_xxx/g'
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅$&

  • 也可以使用 `s/abc720p\K/_xxx/g` (2认同)