Вы можете внедрить переменную оболочки в свой awk-скрипт с помощью опции -v
:
#!/bin/bash
#these are bash variables
file=$1
header=$(head -n1 $file)
awktoken=$2
############################
# awk script #
############################
read -d '' awkscript << 'EOF'
BEGIN { OFS = "\\t" }
/^@/ {
for (i = 1; i <= NF; ++i)
header[i] = $i
next
}
NR > 1 && $variable != p {
#output two blank lines if needed
if (print_blank) {
print "\\n"
}
print_blank = 1
for (i = 1; i <= 3; ++i)
printf("%s%s", header[i], OFS)
for (i = 4; i < NF; ++i)
printf("%s_%s%s", $variable, header[i], OFS)
printf("%s_%s%s", $variable, header[NF], ORS)
}
{ p=$variable; print }
EOF
############################
# end awk script #
############################
awk -vvariable="$awktoken" "$awkscript" ${tmp} > ${output}
variable
— это имя переменной в этом примере. Обычно вы бы вызывали его без $
, но это осталось для того, чтобы он расширился до $3
или любого другого номера, который вы выберете
ogham/dog :Команда -строка DNS-клиент имеет вывод JSON, как описано в разделе Параметры вывода:
-J, --json Display the output as JSON
Сам еще не пробовал. Возможные предостережения:
на момент написания (2021 -06 -14 )была только начальная версия v0.1.0 (2020 -11 -07 ), и широкой поддержки распространения пока нет.
доступен статически скомпилированный двоичный файл для x86 -64, но, к сожалению, требуется GLIBC _2.32 . Это ограничивает его самыми последними дистрибутивами; он не будет работать, например. на Ubuntu 20.04 LTS, которая имеет только GLIC _2.31.