awk 输出值到多个变量

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

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

#/usr/bin/env bash

echo $(seq 1 9) | awk '{ print $5,$6,$7}' | while read a b c
do
    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'
done
echo $a $b $c
ps: while 循环执行一次,通过赋值得到的变量$a,$b,$c只在循环内有效

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

#!/usr/bin/env bash

declare -a array
idx=0
for elt in $( echo $(seq 1 9) | awk '{ print $2,$3,$4,$5,$6,$7}')
do
    array[$idx]=$elt
    let "idx+=1"
done

echo ${array[1]},${array[3]},${array[*]}

res=$( echo $(seq 1 9) | awk '{ print $2,$3,$4,$5,$6,$7}')
for elt in $res
do
    arr[${id:-0}]=$elt
    let "id+=1"
done

echo
for a in {0..5}
do
    echo ${arr[$a]}
done


  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值