2015-09-09 37 views
-1

我有以下格式的文本文件:使用bash腳本閱讀分隔的文件,並替換變量與外殼

78 45 89 45 

我想讀前兩個變量(在這裏,78和45),執行一些計算並用計算出的新變量替換這些值。

有人可以指出這一點?

+0

也有必要發佈要執行的計算和所需的輸出(參照計算) – amdixon

+0

哪裏是你的預期產出? – anubhava

回答

2

下面是一個例子(編輯:bash只),讓你開始,我在其中添加12的第一個值,並添加22在每一行的第二個值。


$ cat /tmp/text.file 
78 45 89 45 
88 55 90 50 
$ cat /tmp/comp.sh 

while read line; do 
     a=($line) 
     a[0]=$((a[0] + 12)) 
     a[1]=$((a[1] + 22)) 
     echo "${a[@]}" 
done < /tmp/text.file 

$ bash /tmp/comp.sh 
90 67 89 45 
100 77 90 50 
+1

這在'sh'中不起作用,它不支持數組。 – Jens

+0

儘管有這些標籤,用戶在問題中特別提到了「bash」腳本。 – chepner

+1

'read -a a'將是設置'a'值的更直接的方法。 – chepner

3

這是POSIX,應該在任何伯恩的遺產殼工作:

while read first second rest; do 
    first=$((first * 2)) 
    second=$((second + 42)) 
    printf '%s\n' "$first $second $rest" 
done < input