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



输入: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'"

输出正确: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'"

输出错误:&_xxx def720p

在我的上下文中,我必须在AS中使用Perl来完成这项工作(就像sed中的&一样(。我不能使用"perl-CIOED-p-e’s/abc720p/abc720p_xxx/g"。

我不知道用Perl是否能做到这一点。

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

perl -CIOED -p -e 's/abc720p/$&_xxx/g'

请参阅$&详细信息。

使用AppleScript:更简单

set oriT to "abc720p def720p"
set |&| to "abc720p"
set my text item delimiters to {|&| & "_xxx", |&|}
set oriT to text items of oriT as text
--> "abc720p_xxx def720p"

最新更新