Csv 用于选择整个记录的awk命令在终端中有效,但在Applescript中无效

Csv 用于选择整个记录的awk命令在终端中有效,但在Applescript中无效,csv,awk,escaping,applescript,zsh,Csv,Awk,Escaping,Applescript,Zsh,我试图在AppleScript中解析SPARQL查询(CSV)的结果。输入如下所示,每条记录位于新行上。我只想挑出全部记录(以便用户可以从列表中进行选择) 以下awk命令的输出在AppleScript中为空(请注意转义的双引号) 正如预期的那样,我得到了第一条记录。awk中的默认记录分隔符(RS)是\n。将RS设置为空字符串有一个特殊值,这意味着记录由空行分隔 要确定curl输出的SPARQL查询结果中使用了哪种类型的换行符,请保存输出并使用vim-b output.txt和do:set lis

我试图在AppleScript中解析SPARQL查询(CSV)的结果。输入如下所示,每条记录位于新行上。我只想挑出全部记录(以便用户可以从列表中进行选择)

以下
awk
命令的输出在AppleScript中为空(请注意转义的双引号)


正如预期的那样,我得到了第一条记录。

awk中的默认记录分隔符(RS)是
\n
。将RS设置为空字符串有一个特殊值,这意味着记录由空行分隔

要确定
curl
输出的SPARQL查询结果中使用了哪种类型的换行符,请保存输出并使用
vim-b output.txt
和do
:set list
打开它。
^M
表示CR(macOS),$通常表示LF(Linux)。请注意,使用
curl
中的
-o
标志保存输出可能会导致使用不同类型的换行符,而不仅仅是执行
echo&theVariable&>$HOME'/Desktop/output.txt'

还请注意,
\n
通常添加在文件的最末尾(例如,通过
vim
)。如果另一条记录以
\r
结尾,但最后一条记录以
\n
结尾,则可以将
RS
设置为
“[\r\n]”
,这是
\r
\n
的正则表达式模式。在Applescript中,转义特殊字符,这将成为:

RS=\"[\\r\\n]\"

命令本身应该是ok的;我的猜测是,您传递的输入会有一些不同之处(比如它可能有回车符而不是换行符)。尝试类似于
do shell script“cat>~/testinput.txt
file
命令告诉我它是“ASCII文本,带有CR、LF行终止符”。但是随后
RS=”“
应该可以工作,对吗?应该可以,尽管行末尾的回车可能会在其他地方引起麻烦,这取决于您如何使用它。另外,我会直观地查看文件,确保它看起来正确。顺便说一句,为什么不直接使用
awk'NR==2'
sed'2!d'
?这也是我的第一个选择,但在AppleScript
do shell脚本“sed's/\\r/'|awk'NR==2{print}”中,这两个选项都是空的
do shell script "awk 'BEGIN {RS = \"\"} { print $2 }'<<<" & quoted form of theInput
awk 'BEGIN {RS = ""} { print $2 }' input.txt
RS=\"[\\r\\n]\"