我有一个包含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
答案 0 :(得分:0)
使用数组存储结果并使用sed
执行此简单任务
array=( $(sed -E 's/^[^[:blank:]]*_([[:digit:]]+)[[:blank:]]+.*$/\1/' file) )
for i in "${array[@]}"
do
# Do some task with "$i"
done
答案 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