2015-03-20 3 views
1

В моей awk-программе есть несколько операторов печати, и я хочу, чтобы они передали их обратно в переменные оболочки. Является ли это возможным.awk выводит на несколько переменных оболочки

Для например:

awk '{ r=10; q=20; rr = sprintf("%04.0f", r); qq = sprintf("%05.0f",q); }'

Могу ли я передать выход р-р и QQ в двух различных переменных оболочки?

ответ

3

Я считаю, что проще заполнить массив оболочки с выводом команды AWK:

$ arr=($(awk 'BEGIN{ r=10; q=20; printf "%04.0f %05.0f\n",r,q }')) 
$ echo "${arr[0]}" 
0010 
$ echo "${arr[1]}" 
00020 

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

2

Баш read заявление может быть использовано для записи выходных данных AWK в переменные оболочки:

$ read rr qq <<<$(awk 'BEGIN{ r=10; q=20; rr = sprintf("%04.0f", r); qq = sprintf("%05.0f",q); print rr,qq}') 
$ echo $rr $qq 
0010 00020 
Смежные вопросы