2015-09-09 39 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