Вход: 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

В моем контексте, я должен использовать Perl в AS, чтобы сделать эту работу (как & в sed). Я не могу использовать "perl -CIOED -p -e 's / abc720p / abc720p_xxx / g".

Я не знаю, смогу ли я достичь этого с Perl.

0
Cai Yu 13 Мар 2020 в 20:10

2 ответа

Лучший ответ

В Perl синтаксис немного отличается: используйте $& вместо &.

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

Подробнее см. $ &.

5
choroba 13 Мар 2020 в 17:15

С 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"
1
CJK 13 Мар 2020 в 19:14