我正在 bash shell 中处理一些数据,需要使用 sed/awk 等对其进行操作,并且需要从奇数行中减去偶数行。
例如:
51202598
51204294
51370060
51371733
51535314
51536526
将变成:
1696
1673
1212
提前致谢。
使用awk:
awk 'NR%2{p=$1;next}{print ($1-p)}' file
1696
1673
1212
只是为了不使用 awk 的乐趣:
cat calc.data | paste - - | xargs -I{} echo {} "- _1 * p" | dc
或更短:
xargs -a calc.data -l2 printf "%s %s - _1 * p" | dc
与
sed
和 bc
(来自 Glenn 的评论):
sed -n 'h;n;G;s,\n,-,;p' calc.data|bc
或单独使用
dc
(但顺序相反):
dc -f calc.data -e '[-_1*pswz1<r]srz1<r'
这是一种
awk
方法,无需进行单次除法或取模:
echo '51202598
51204294
51370060
51371733
51535314
51536526' |
awk '$NF -= (_ = !_) ? __ = $_ : __'
1696
1673
1212