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

Get unique values from a column only from lines starting with certain string in csh using awk

我正在尝试从这个 influxdb 查询中获取主机列表:

$ 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[]++ { print  }'

这在仅使用 shell sh 和 returns 唯一主机列表时有效,例如:

foo.tld
bar.tld

但是在使用 csh shell 时出现此错误:

a[: Event not found.

知道如何在 shcsh shell 中做到这一点吗?

尝试转义 any/all ! 个字符,例如 \!

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

最常用的 "events" 是 !!(上一行)和 !$(上一行的最后一个词),但还有一百万个。

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

IHTH