2016-09-02 53 views
1

我有一個包含2行的文件,我想從每行中獲取特定的字符並執行一些操作。獲取特定行中的特定字符並存儲在變量中

我的文件:

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 。我想從第一線拿4,做一些手術,然後我會從第二線拿3,並且會做一些手術。基本上我想基於計數器它會得到第一或第二行字符。

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

問題不清楚 - '但是我想根據櫃檯它會得到第一或第二個號碼。發佈所需的輸出 – sjsam

+0

已更新問題 – samir

+0

爲什麼不將結果存儲在數組中並稍後使用它進行處理? – sjsam

回答

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 ]

0

用另一種方法sed和陣列:

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

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

由於在給定輸入中只有一個空格,所以'sed's /.* \([0-9] \)。*/\ 1 /'file'也可以工作 – Sundeep

+1

@spasic它可以工作,但可能有點安全從非空格字符開始。 – SLePort

相關問題