读取分隔文件并用shell替换变量

时间:2015-09-09 09:29:35

标签: bash sh zsh

我有一个以下格式的文本文件:

78 45 89 45

我想用bash脚本读取前两个变量(这里是78和45),执行一些计算并用计算的新变量替换值。

有人可以对此有所了解吗?

2 个答案:

答案 0 :(得分:3)

这是POSIX,应该适用于任何Bourne-heritage shell:

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

答案 1 :(得分: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