使用awk仅从csh中以特定字符串开头的行中获取列的唯一值
我正在尝试从此XDB查询获取主机列表:使用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如下: $
$ 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 }'
这在使用shellsh
时有效,并仅返回唯一主机的列表,例如:
foo.tld
bar.tld
但是当使用csh
shell时,我得到了以下错误:
a[: Event not found.
您知道如何在
sh
和csh
shell中实现这一点吗?尝试转义任何/所有代码>字符,如\代码>
csh
解释代码>字符作为命令历史记录中的事件
最常用的“事件”是代码>(上一行)和$代码>(上一行的最后一个字),但还有一百万个
我很惊讶你会收到错误消息,因为我认为csh尊重单引号。(但显然不是;-))
IHTHsh和csh是不同的语言。这似乎相当于想要编写perl和python都可以运行的代码。