использовать «$ n» в качестве строковой переменной bash в сценарии awk?

ACPI действительно был проблемой.

Выполнение моего сценария приостановки на диск вручную работает отлично.

Suspend-to-ram работает лучше, чем раньше, но все еще работает не совсем правильно. Но меня вполне устраивает приостановка на диск.

2
10.01.2019, 03:24
1 ответ

Вы можете внедрить переменную оболочки в свой 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или любого другого номера, который вы выберете

.
3
27.01.2020, 22:02

Теги

Похожие вопросы