awk 输出值到多个变量

来源:互联网 发布:mounty11 for mac 编辑:程序博客网 时间:2024/04/28 04:12

通常把awk执行的结果直接赋值给某个变量然后对该变量进行操作。当需要同时输出多个值时,却没有好的方法同时赋给多个变量,以下只是变通的方法。

1. 直接用while read 重定向到多变量,但是得到的变量只在循环范围内有效

#/usr/bin/env bashecho $(seq 1 9) | awk '{ print $5,$6,$7}' | while read a b cdo    echo -n "Loop times: "    echo $a $b $c    rep=$(ls -l $0|column -t)    echo "$rep" | sed -n 's/\([^ ]*\)  \([^ ]*\)  \([^ ]*\)  \(.*\)/\1'"[${a}]"'\2'"[${b}]"'\3'"[${c}]"'\4/p'doneecho $a $b $c
ps: while 循环执行一次,通过赋值得到的变量$a,$b,$c只在循环内有效

2. 通过循环和数组进行变相赋值

#!/usr/bin/env bashdeclare -a arrayidx=0for elt in $( echo $(seq 1 9) | awk '{ print $2,$3,$4,$5,$6,$7}')do    array[$idx]=$elt    let "idx+=1"doneecho ${array[1]},${array[3]},${array[*]}res=$( echo $(seq 1 9) | awk '{ print $2,$3,$4,$5,$6,$7}')for elt in $resdo    arr[${id:-0}]=$elt    let "id+=1"doneechofor a in {0..5}do    echo ${arr[$a]}done


1 0