如何在shell脚本中从第2行第3行中减去第1行中的数据?

时间:2013-02-02 13:11:44

标签: linux bash shell

我有一个包含一列和多行的文件。

我想从彼此中减去每一行,以便检查我期望开始具有恒定差异的哪一行。

i.e
line1-line2
line2-line3
line3-line4
etc.  

2 个答案:

答案 0 :(得分:1)

您可以使用awk执行此操作:

awk 'NR>1 {print prev - $1} {prev=$1}' <input_file>

这样,动作{print prev - $1}仅针对第一行之后的行执行,而动作{prev=$1}则针对每一行执行,但是在评估了第一个模式并且是相应的动作之后,以防万一。

答案 1 :(得分:0)

使用while循环。请记住最后一行:

previous=0
while read n ; do
    if ((previous)) ; then
        echo $((previous-n))
    fi
    previous=$n
done

如果您的行包含浮点数,请使用bc或切换到某些脚本语言,例如Perl。