获取特定行中的特定字符并存储在变量中

时间:2016-09-02 13:51:23

标签: shell awk sed grep

我有一个包含2行的文件,我想从每一行获取特定的char并进行一些操作。

我的档案:

vm16_DSC_Instance_4 dsc-sig=172.16.17.14;Public=10.10.72.15;dsc-InterInstance=172.16.18.14;dsc-OAM=172.16.16.19
vm19_DSC_Instance_3 dsc-sig=172.16.17.15;Public=10.10.72.14;dsc-InterInstance=172.16.18.15;dsc-OAM=172.16.16.20

要求: 从下面的名字我想要像4和3这样的数字。

vm16_DSC_Instance_4
vm19_DSC_Instance_3

目前: 在这里,我一次性获得4和3。我想从第1行拿4,然后做一些操作,然后我将从第2行拿3,并做一些操作。基本上我想要基于计数器它将获得第1或第2行字符。

cat /tmp/tmp_inst_tmp |awk '{print $1}' | cut -d'_' -f4
4
3

2 个答案:

答案 0 :(得分:0)

使用数组存储结果并使用sed执行此简单任务

array=( $(sed -E 's/^[^[:blank:]]*_([[:digit:]]+)[[:blank:]]+.*$/\1/' file) )
for i in "${array[@]}"
do
# Do some task with "$i"
done

注意[ useless use of cat ]

答案 1 :(得分:0)

sed和array的另一种方法:

while read -r num; do
  arr+=("$num")
done < <(sed 's/^[^ ]*\([0-9][0-9]*\) .*/\1/' file)

echo ${arr[0]}
4
echo ${arr[1]}
3