在AppleScript中使用

时间:2014-12-12 21:27:19

标签: regex sed applescript

我试图在AppleScript中使用正则表达式,将两个变量设置为某些文本的不同子字符串,这些字符串采用以下格式并在系统剪贴板上(尽管文本和URL可以随意变化,并且在URL之后通常是一个空行:

This is a webapge title
http://url.foo.com/ 

我想将第一行分配给pageTitle,将第二行分配给pageURL,并忽略其他所有内容。我认为这样做的AppleScript是:

set titleURL to the clipboard
set pageTitle to (do shell script "echo \"" & titleURL & "\" | sed -E 's#(.*)\\n(.*)\\n?#\\1#'")
set pageURL to (do shell script "echo \"" & titleURL & "\" | sed -E 's#(.*)\\n(.*)\\n?#\\2#'")

正则表达式执行我想要的when I test it on regex101.com,但AppleScript会为两个变量返回整个字符串,不受影响。我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:1)

我设法通过简单地将pageTitle设置为剪贴板的第一行并pageURL设置为第二行,并在awk的帮助下完成了工作:

set titleURL to the clipboard
set pageTitle to (do shell script "pbpaste | awk '{ if (NR==1) print $0 }'")
set pageURL to (do shell script "pbpaste | awk '{ if (NR==2) print $0 }'")

不是最有趣或一般的解决方案,但它对我的目的来说是完美的。感谢@DavidRavetti和@jmunsch的有用建议。