2015-10-29 67 views
0

我在用awk從一個文本文件中導出一個變量(由包含4行的1行組成的索引)時遇到了一些麻煩。在bash中由awk創建的索引變量

特別是,我有一個文本文件包含循環的所有輸入信息。每行包含4個特定的輸入值,並且每次迭代都使用輸入文件的不同行。

輸入文件是這樣的:

/home/hannelore/TVB-pipe_local/subjects/CON02T1/ 10012 100000 1001 --> used for iteration 1 
/home/hannelore/TVB-pipe_local/subjects/CON02T1/ 10013 7200 1001 --> used for iteration 2 
... 

從這個輸入的文本文件,我確定了不同的列(路徑,種子,計數,目標),然後我就想指標,這些變量在每次迭代循環。但是,索引0返回整個變量,而較高的索引返回而不輸出。在這個獲得的變量上使用awk,cut或IFS,我無法分割變量。誰能幫我這個?

,我使用的一些代碼:

seed=$(awk '{print $2}' $input_file) 

- 從輸入文件>提取塔的信息,這個工作

seedsplit=$(awk '{print $2}' $seed) 

seedsplit=$(cut -f2 -d ' ' $seed)" 

預先感謝您!

親切的問候,

謝漢內洛爾·

+1

我不明白你在'seedsplit'任務中做了什麼。 awk的第二個參數是文件名,但是'$ seed'包含輸入文件的第2個字段的所有值。 – Barmar

+0

沒有足夠的信息。這些路徑位置有哪些文件?它們包含什麼,你想從中提取什麼? –

+0

你想索引什麼變量?我在代碼中看不到任何數組。 – Barmar

回答

0

如果我理解正確的話,你想按行提取輸入文件行的值。

while read a b c d; do echo "var1:" ${a}; done < file 

將打印

var1: /home/hannelore/TVB-pipe_local/subjects/CON02T1/ 
var1: /home/hannelore/TVB-pipe_local/subjects/CON02T1/ 

同樣可以訪問B,c和d的其他變量。

0

如果你想要一個數組,然後使用數組賦值表示:

seed=($(awk '{print $2}' $input_file)) 

現在,你將在一個單獨的數組元素具有輸出的每一行字從awk

col1=($(awk '{print $1}' $input_file)) 
col3=($(awk '{print $3}' $input_file)) 

現在你有三個可以並行索引的數組。

for i in $(seq 1 "${#col1[@]}" 
do 
    echo "${col1[$i]} in col1; ${seed[$i]} in col2; ${col3[$i]} in col3" 
done