Suponiendo un shell POSIX, desea un bucle for
aquí, recorriendo "$@"
que contiene los argumentos de la línea de comando:
for filename in "$@"; do
lines=$(wc -l < "$filename")
printf '%u lines in %s\n' "$lines" "$filename"
done
Usar todas las comillas es muy importante. Le permite pasar nombres de archivo que contienen espacios y otros caracteres.
./my_script.sh /var/log/syslog "$HOME/My Dir with Spaces/a file with spaces.txt"
Да, на самом деле проще сделать это только в JQ. Вы должны создать строку, которую вы хотите, в виде массива, используя фильтры JQ, а затем использовать фильтр @csv
для вывода строки в формате CSV (вместе с -r
, чтобы CSV не получил дальше JSON -сбежал ).
Я не совсем понимаю, каковы ваши требования, так как ваш код на самом деле не соответствует выходным данным вашего примера, и не очевидно, что делать с повторяющимися/вложенными данными, но вот частично рабочий пример:
jq -r '.result[] |. as $result
|.triggers[]
| [$result.name, $result.groups[0].name, $result.interfaces[0].ip,.description]
| @csv'
, который, учитывая ваши тестовые данные, выводит
"love","Flower","192.168.1.190","The host is unavailable by ICMP"
"love","Flower","192.168.1.190","CPU load above {$CPU}% ({ITEM.LASTVALUE})"
"love","Flower","192.168.1.190","The host has just been restarted (SysUptime {ITEM.LASTVALUE})"
"love","Flower","192.168.1.190","Sem resposta SNMP. Community {$SNMP_COMMUNITY}"
"love","Flower","192.168.1.190","Memory Usage is over {$MEM}% ({ITEM.LASTVALUE})"
"love","Flower","192.168.1.190","Free disk space is less than {$DISK}% on volume C:\\ Label: Serial Number 1ab4e15c ({ITEM.LASTVALUE})"
"love","Flower","192.168.1.190","Free disk space is less than {$DISK}% on volume E:\\ Label:NETAPP_LUN_01 Serial Number 84048285 ({ITEM.LASTVALUE})"
"love","Flower","192.168.1.190","Free disk space is less than {$DISK}% on volume F:\\ Label:NETAPP_LUN_02 Serial Number 6426fd9 ({ITEM.LASTVALUE})"
"love","Flower","192.168.1.190","Free disk space is less than {$DISK}% on volume G:\\ Label:NETAPP_LUN_03 Serial Number 184b60f9 ({ITEM.LASTVALUE})"
"love","Flower","192.168.1.190","Free disk space is less than {$DISK}% on volume H:\\ Label:NETAPP_LUN_04 Serial Number 88541457 ({ITEM.LASTVALUE})"
"love","Flower","192.168.1.190","Free disk space is less than {$DISK}% on volume I:\\ Label:NETAPP_LUN_07 Serial Number f23669bc ({ITEM.LASTVALUE})"
Цитирование больше, чем вы просили, но это полностью действительный CSV.