Sed "неверный код команды <", при использовании Sed в Applescript - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь использовать Sed для замены строк в моем Applescript.

Я использую следующую команду:

set selected_text to do shell script "echo " & "\"" & selected_text & "\"" & " | sed  /'s/<\\(.*\\)>/\\1/'"

и меня встречает следующая ошибка:

The action “Run AppleScript” encountered an error: “sed: 1: "/s/<\(.*\)>/\1/": invalid command code <”

Ожидаемый ввод:

FirstName LastName <FirstName.LastName@email.com>

Ожидаемый результат:

FirstName.LastName@email.com

У кого-нибудь есть предложения?

1 Ответ

0 голосов
/ 05 ноября 2018

лучше (проще) использовать quoted form of с использованием do shell script. AppleScript экранирует текст для вас.

Косая черта перед регулярным выражением была неправильной, без нее ошибка исчезла, но в вашем регулярном выражении все еще была ошибка. С помощью sed вы хотите заменить вещи на входе, поэтому вы должны использовать регулярное выражение ввода, соответствующее вашему входу. Затем в скобках указывается та часть, которую вы хотите сохранить. Первая часть - найти все элементы до <, вторая - адрес электронной почты, который вы хотите сохранить в скобках, и, наконец, закрывающий >.

set selected_text to do shell script "echo " & quoted form of selected_text & " | sed  's/[^<]*<\\(.*\\)>/\\1/'"

Бест, Майкл / Гамбург

...