根据以下语法给出包含数字数据的文件:
D1
D2
--
D3
D4
--
...
--
Dn-1
Dn
Di
是任何正数。
我想输出一个包含
D2-D1
D4-D3
...
Dn-Dn-1
使用bash实现此目的的基本方法是什么?
答案 0 :(得分:2)
拥有此源文件:
$ cat source
3
7
--
9
14
--
9
3
使用awk
(此任务的更好工具):
awk '{print $2+0-$1+0}' RS='--' source > target
结果:
$ cat target
4
5
-6
如果你想坚持bash
:
flag=0
while IFS='' read -r num; do
if [ $flag -eq 0 ]; then
d1=$num
flag=1
continue
fi
if [ $num = "--" ];then
flag=0
continue
fi
(( num -= d1))
echo $num
done < source > target
答案 1 :(得分:1)
GNU awk 解决方案:
示例testfile
(假设D
前缀是必需的):
D2
D3
--
D3
D5
--
D3
D10
--
工作:
awk -v RS='--' -v FPAT='[0-9]+' 'NF{print $2-$1}' file
输出:
1
2
7