использование переменной в кавычках

awk -v input="$constrained" '
    BEGIN {
        n = split(toupper(input), user)
        fmt = "%-4s %-8s     NNN    0.050 0.050  0.050\n"
    }
    {print}
    /<< matched line >>/ {
        for (i=1; i<=n; i++)
            printf fmt, user[i], user[i]"_GPS"
        exit
    }
' ./text_data > text_data_2

В вышеупомянутых кодах я хочу определить переменную для 0.050 0.050 0.050. Я пытался использовать с

echo -n "##### numeric value?  ####?"
read value
fmt = "%-4s %-8s     NNN    $value $value  $value\n"

но в кавычках, $value переменная не может быть определена. Как я могу определить эту переменную в кавычках?

2
задан 17 August 2016 в 21:38

1 ответ

Необходимо смочь передать переменную с помощью -v то же, как Вы делаете для Вашего input переменная

awk -v input="$constrained" -v value="0.05"

затем использование sprintf в Вашем BEGIN блок для построения строки формата, например,

BEGIN {
  n = split(toupper(input), user);
  fmt = sprintf("%%-4s %%-8s     NNN    %-4.3f %-4.3f %-4.3f\n", value, value, value, value);
}

Примечание использование %% для создания литерала % в эти fmt строка.

<час>

Для тестирования этого это создает строку правильного формата, мы можем добавить операторы печати, сначала для эти fmt сама строка и затем для получающегося оператора печати:

$ awk -v value="0.05" '
    BEGIN{
      fmt = sprintf("%%-4s %%-8s     NNN    %-4.3f %-4.3f %-4.3f\n", value, value, value, value);
      print fmt;
      printf(fmt, "test", "testval");
    }'
%-4s %-8s     NNN    0.050 0.050 0.050

test testval      NNN    0.050 0.050 0.050
4
ответ дан 2 December 2019 в 02:18

Другие вопросы по тегам:

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