Получить уникальные значения из столбца только из строк, начинающихся с определенной строки в csh, используя awk - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь получить список хостов из этого запроса infxdb:

$ 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 }'

Это работает при использовании оболочки sh и возвращает только список уникальных хостов, например:

foo.tld
bar.tld

Но при использовании csh shell я получаю эту ошибку:

a[: Event not found.

Есть идеи, как этого добиться, будучи переносимым в оболочках sh и csh?

1 Ответ

0 голосов
/ 17 мая 2018

Попробуйте избежать любых / всех ! символов, таких как \!

csh интерпретирует символ ! как события в истории команд.

Наиболее распространенные «события» - это !! (предыдущая строка) и !$ (последнее слово в предыдущей строке), но есть еще миллион.

Я удивлен, что вы получаете сообщение об ошибке, так как я думал, что csh соблюдает одинарные кавычки (но, видимо, нет ;-)).

IHTH

...