Bash Shell脚本用于获取模式匹配并获取行中的值

时间:2017-09-30 17:02:51

标签: linux bash shell unix

我在文件foo.txt

中有如下图案
|eth0:9:8|eth1:7:0|

在循环中,我在每次迭代中都有一个值为eth0,eth1等的变量。

根据变量的值,Say eth0我需要值9和8 在eth1的情况下,我需要值7和0

1 个答案:

答案 0 :(得分:0)

这样的事情应该有效。您需要的值存储在var1var2此处。

TO_PARSE="|eth0:9:8|eth1:7:0|"
declare -a eths=(eth0 eth1)
for eth in "${eths[@]}"; do
  parsed=$(echo "${TO_PARSE}" | \
           awk 'BEGIN{FS=":"; RS="|"}{print $1 " " $2 " " $3}' | \
           grep "${eth}")
  var1=$(echo "${parsed}" | cut -f2 -d' ')
  var2=$(echo "${parsed}" | cut -f3 -d' ')
  echo "eth=${eth} var1=${var1} var2=${var2}" 
done