使用awk等从奇数行中减去偶数行

时间:2014-05-08 20:03:58

标签: bash awk sed

我正在处理bash shell中的一些数据,需要使用sed / awk等来操作它,并且需要从奇数行中减去偶数行。

例如:

51202598
51204294
51370060
51371733
51535314
51536526

会变成:

1696
1673
1212

提前致谢。

2 个答案:

答案 0 :(得分:7)

使用awk:

awk 'NR%2{p=$1;next}{print ($1-p)}' file
1696
1673
1212

答案 1 :(得分:3)

只是为了不使用awk的乐趣:

cat calc.data | paste - - | xargs -I{} echo {} "- _1 * p" | dc

甚至更短:

xargs -a calc.data -l2 printf "%s %s - _1 * p" | dc

sedbc(通过glenn评论):

sed -n 'h;n;G;s,\n,-,;p' calc.data|bc

或单独使用dc(但顺序相反):

dc -f calc.data -e '[-_1*pswz1<r]srz1<r'