сделать сценарий оболочки Sed и Perl: использование & в качестве совпадающей строки - PullRequest
0 голосов
/ 13 марта 2020

ввод: 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.

Ответы [ 2 ]

5 голосов
/ 13 марта 2020

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

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

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

1 голос
/ 13 марта 2020

С 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"
...