Передача переменной сценария оболочки в команду AWK

Я хочу смочь назвать сценарий оболочки contining следующей командой.

awk -F $'\xE7' '{OFS ="¬"} { $3 = sprintf("%010s". $3) ; print $0 }' > outputfile

Но я хочу смочь передать переменную сценария оболочки в эту команду, которая будет использоваться для замены $3 в рамках команды AWK.

Как я передаю переменную сценария оболочки в эту команду AWK?

3
задан 17.08.2012, 18:23

3 ответа

Одинарные кавычки запрещают расширение. Переключите их.

awk ... '...'"$foo"'...' ...
-1
ответ дан 07.12.2019, 23:44

Корректный способ сделать это использует переменную передающую функцию AWK. Кроме того, вероятно, только необходимо установить OFS однажды, таким образом, необходимо выполнить в нем BEGIN пункт.

awk -F $'\xE7' -v awkvar="$shellvar" 'BEGIN {OFS ="¬"} { $3 = sprintf("%010s". $3) ; print $0, awkvar }' input file > outputfile

Вы могли также использовать -v установить OFS:

awk -F $'\xE7' -v awkvar="$shellvar" -v OFS ="¬" '{ $3 = sprintf("%010s". $3) ; print $0, awkvar }' input file > outputfile

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

5
ответ дан 07.12.2019, 23:44

awk имеет ENVIRON массив для доступа к среде:

$ FOO=bar awk 'BEGIN{print ENVIRON["FOO"]}'
bar
2
ответ дан 07.12.2019, 23:44

Теги

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