awk: передача переменных из bash - PullRequest
1 голос
/ 19 марта 2012

Я получаю синтаксические ошибки со следующим кодом.Существует ли версия awk, которая не поддерживает опцию "-v", или я что-то упустил?Спасибо.

#!/usr/local/bin/bash
f_name="crap.stat" 
S_Date="2012-02-10"
E_Date="2012-02-13"

awk -F "\t" -v s_date="$S_Date" -v e_date="$E_Date" 'BEGIN {print s_date,e_date}' $f_name

Ответы [ 2 ]

1 голос
/ 19 марта 2012

Программа по умолчанию awk в Solaris 10 (она же oawk), похоже, не поддерживает параметр -v;альтернативная программа nawk поддерживает это.Некоторые люди меняют имя awk, так что это ссылка на nawk, поэтому вы не можете предсказать, что вы найдете как awk.

Программы awk в HP-UX11.x, AIX 6.x и Mac OS X (10.7.x) поддерживают нотацию -v, что неудивительно, поскольку POSIX ожидает поддержки -v.

1 голос
/ 19 марта 2012

Ваш код полностью работает на моем awk (GNU Awk 3.1.6).

Есть и другой способ: если вы экспортируете переменные, вы можете использовать их в ENVIRON массиве

$ export f_name="crap.stat"
$ awk '{ print ENVIRON["f_name"] }' anyfile
crap.stat
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...