【问题标题】:Sed "invalid command code <", when using sed within Applescript在 Applescript 中使用 sed 时,Sed“无效的命令代码 <”
【发布时间】:2019-04-08 23:00:50
【问题描述】:

我正在尝试使用 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

有人有什么建议吗?

【问题讨论】:

  • 修复了错误:命令应该是:set selected_text to do shell script "echo " &amp; "\"" &amp; selected_text &amp; "\"" &amp; " | sed -E 's/.*&lt;(.*)&gt;/\\1/'"

标签: macos sed applescript


【解决方案1】:

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

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

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

最佳,迈克尔/汉堡

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-18
    • 2020-07-30
    • 2021-12-25
    • 2014-02-23
    • 1970-01-01
    • 2015-10-09
    • 1970-01-01
    • 2015-07-05
    相关资源
    最近更新 更多