使用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.
知道如何在 sh
和 csh
shell 中做到这一点吗?
尝试转义 any/all !
个字符,例如 \!
csh
将 !
字符解释为命令历史记录中的事件。
最常用的 "events" 是 !!
(上一行)和 !$
(上一行的最后一个词),但还有一百万个。
我很惊讶你收到那个错误消息,因为我认为 csh 支持单引号。(但显然不是;-))。
IHTH
我正在尝试从这个 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.
知道如何在 sh
和 csh
shell 中做到这一点吗?
尝试转义 any/all !
个字符,例如 \!
csh
将 !
字符解释为命令历史记录中的事件。
最常用的 "events" 是 !!
(上一行)和 !$
(上一行的最后一个词),但还有一百万个。
我很惊讶你收到那个错误消息,因为我认为 csh 支持单引号。(但显然不是;-))。
IHTH