列の行間の差を計算する方法は?

列の行間の差を計算する方法は?

次の出力がある場合。列には8行があります。

1
2
3
4
5
6
7
8

私はこのような出力が欲しい。

1-3 
2-4
3-5
4-6
5-7
6-8

実際、私はこの違いの結果だけが欲しい。

ベストアンサー1

これはおそらくあなたが要求するものです:

$ seq 8 | awk -v d=2 'NR>d{print a[(NR-d)%d] "-" $0} {a[NR%d]=$0}'
1-3
2-4
3-5
4-6
5-7
6-8

または:

$ seq 8 | awk -v d=2 'NR>d{print a[(NR-d)%d] - $0} {a[NR%d]=$0}'
-2
-2
-2
-2
-2
-2

おすすめ記事