使用awk仅从csh中以特定字符串开头的行中获取列的唯一值

使用awk仅从csh中以特定字符串开头的行中获取列的唯一值,awk,csh,Awk,Csh,我正在尝试从此XDB查询获取主机列表: $ influx -database "collectd" -execute "SHOW TAG VALUES WITH KEY=host" 输出类似于: name: system key value ------------ host foo.tld host bar.tld name: mem key value ------------ host foo.tld host bar.tld ... 目前,我使用的awk如下: $

我正在尝试从此XDB查询获取主机列表:

$ influx -database "collectd" -execute "SHOW TAG VALUES WITH KEY=host"
输出类似于:

name: system
key   value
------------
host  foo.tld
host  bar.tld

name: mem
key   value
------------
host  foo.tld
host  bar.tld

...
目前,我使用的
awk
如下:

$ db-query | awk '/^host/ && !a[$2]++ { print $2 }'
这在使用shell
sh
时有效,并仅返回唯一主机的列表,例如:

foo.tld
bar.tld
但是当使用
csh
shell时,我得到了以下错误:

a[: Event not found.

您知道如何在
sh
csh
shell中实现这一点吗?

尝试转义任何/所有
字符,如
\

csh
解释
字符作为命令历史记录中的事件

最常用的“事件”是
(上一行)和
$(上一行的最后一个字),但还有一百万个

我很惊讶你会收到错误消息,因为我认为csh尊重单引号。(但显然不是;-))


IHTH

sh和csh是不同的语言。这似乎相当于想要编写perl和python都可以运行的代码。