我有一个以下格式的文本文件:
78 45 89 45
我想用bash脚本读取前两个变量(这里是78和45),执行一些计算并用计算的新变量替换值。
有人可以对此有所了解吗?
答案 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