我有一个包含很多列的文件。一列包含数字列表:
asd "/$ 0
asd /"$ 1
add %$" 4
add "/% 18
ads "/% 24
add "/% 30
我想使用 awk 编写一个脚本,允许测量一行中包含的数字与前一行之前的行之间的差异(例如:第三行与第一行之间的差异) 所以输出将是:
4
17
20
12
我该怎么做? (如果您有关于 awk 的好教程,我将不胜感激)
最佳答案
awk 的代码:
$ awk '{c=b;b=a;a=$3} c!="" {print $3-c}' file 4 17 20 12
更一般,基于 sudo_O 的回答 here :
$ awk -v distance=1 'NR>distance{print $3-a[(NR-distance)%(distance+1)]}{a[NR%(distance+1)]=$3}' file 1 3 14 6 6 $ awk -v distance=2 'NR>distance{print $3-a[(NR-distance)%(distance+1)]}{a[NR%(distance+1)]=$3}' file 4 17 20 12 $ awk -v distance=3 'NR>distance{print $3-a[(NR-distance)%(distance+1)]}{a[NR%(distance+1)]=$3}' file 18 23 26
关于linux - 使用awk测量同一列中2个数字之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17555061/