我在foo.txt文件中有如下模式

|eth0:9:8|eth1:7:0|

在循环中,我有一个变量,在每次迭代中分别具有eth0、eth1等值。
根据变量的值,比如eth0,我需要值9和8
如果是eth1,我需要值7和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

08-07 22:29