在Applescript中使用sed时,sed“无效的命令代码<”

时间:2018-11-05 14:58:39

标签: macos sed applescript

我正在尝试使用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 :(得分:0)

更好(更简便)的方法是将quoted form ofdo shell script一起使用。 AppleScript为您转义文本。

正则表达式前面的斜杠是错误的,没有它,错误消失了,但是您的正则表达式中仍然存在错误。使用sed,您要替换输入中的内容,因此必须使用与整个输入匹配的输入正则表达式。然后,括号定义了您要保留的部分。第一部分是查找直到<为止的所有项目,第二部分是要保留在括号内的电子邮件地址,最后是结尾的>

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

最好,迈克尔/汉堡