linux - 使用awk测量同一列中2个数字之间的差异

标签 linux shell awk

我有一个包含很多列的文件。一列包含数字列表:

   asd "/$ 0
   asd /"$ 1
   add %$" 4
   add "/% 18
   ads "/% 24
   add "/% 30

我想使用 awk 编写一个脚本,允许测量一行中包含的数字与前一行之前的行之间的差异(例如:第三行与第一行之间的差异) 所以输出将是:

4
17
20
12

我该怎么做? (如果您有关于 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/

相关文章:

linux将程序提升为shell命令

linux - 限制守护进程在 Linux 上打开某些端口

android - 通过 ADB Shell 或终端获取应用程序名称/标签

linux - 如何在XML文件中的单词后面添加变量内容

linux - 如何通过计算 AWK 或 bash 中 char 的出现次数来过滤行?

php - 访问 MediaWiki 扩展

windows - 在 Windows 和 Linux 上使用 Perl append 到 Excel 电子表格

wpf - 在 Prism v4 WPF 应用程序(区域)中打开第二个 shell

linux - 如果同一行有 2 个字段匹配,则从同一列减去 2 个值

linux - 解析log4j和Java异常日志