如何使用awk从第一行减去行?

你父亲

我的数据文件如下所示:

10 -0.314690785295
20 -0.251967909317
30 -0.215271387106
40 -0.189228416217

所需的输出是:

10 -0.0627229
20 -0.0994193
30 -0.1254623
  awk 'BEGIN {first_row = 0; col_val=""}{ if (first_row == 0) {first_row = $2; col_val=$1} else {print col_val " " first_row - $2; col_val=$1}}'

这是命令行的输出:

 $ echo "10 -0.314690785295
 20 -0.251967909317
 30 -0.215271387106
 40 -0.189228416217" | awk 'BEGIN {first_row = 0; col_val=""}{ if (first_row == 0) {first_row = $2; col_val=$1} else {print col_val " " first_row - $2; col_val=$1}}'
 10 -0.0627229
 20 -0.0994194
 30 -0.125462

现在,确定其工作原理:

BEGIN子句定义一段代码,该代码段在启动之前作为初始化执行。在此位置,我们初始化两个变量,其余逻辑将跟踪这些变量。

在程序的主要部分中,在第二组{}中。我们定义了将对输入中的每一行执行的逻辑(您也可以在模式之前添加一个模式,使其仅在某些行上运行,但这不在此答案的范围之内)。

逻辑测试是否设置了first_row值。如果不是,则这是输入的第一行,我们只需要将first_row值初始化为该行中的第二个字符串,即$ 2,我们还需要复制第一列中的字符串$ 1为了匹配您所需的输出,我们将该值复制到col_val中。

否则,它是输入中的每隔一行,我们将col_value打印一个空格,并将first_row的结果与第二行$ 2的当前行的值相减,以便first_row-$ 2。然后,将输入的第一列中的新字符串值复制到col_val中。

我不明白您第一次真正需要什么:) ..这是可以执行您想要的操作的awk脚本..因为10-20是-10而不是10。

 awk '{ if (NR == 1) { for (i = 1; i <= NF; i++){ first_row[i] = $i} } else { for (i = 1; i <= NF; i++){ printf "%s ", first_row[i] - $i }; printf "\n"}}'

请注意,输出看起来像这样,这与您为第一列添加的另一列以显示进度的预期期望稍有不同。

 echo "10 -0.314690785295 18
 20 -0.251967909317 12
 30 -0.215271387106 35
 40 -0.189228416217 44" | awk '{ if (NR == 1) { for (i = 1; i <= NF; i++){first_row[i] = $i} } else { for (i = 1; i <= NF; i++){ printf "%s ", first_row[i] - $i }; printf "\n"}}'
 -10 -0.0627229 6 
 -20 -0.0994194 -17 
 -30 -0.125462 -26 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从每个主题的第一行中减去行?

来自分类Dev

如何跳过文件的第一行-AWK

来自分类Dev

使用awk删除第一行中为“-”的列

来自分类Dev

如何从第一行减去第二行并在mysql中生成输出列

来自分类Dev

如何从第一行减去第二行并在mysql中生成输出列

来自分类Dev

如何在一行前面加上或用awk或sed替换第一行

来自分类Dev

如何使用sed或awk打印第一行和段落的模式

来自分类Dev

awk打印条件的第一行

来自分类Dev

如何从第二列减去每一行并保持第一列

来自分类Dev

如何使用awk将第一列和第二列的第一行打印为单列?

来自分类Dev

如何从python中的df减去(最后一列,最后一行)减去(最后一列,第一行)

来自分类Dev

熊猫,如何从系列中的所有值中减去第一行的值?

来自分类Dev

使用awk,在所有列中减去上一行并打印结果

来自分类Dev

使用awk,在所有列中减去前一行并打印结果

来自分类Dev

如何使用sed显示第一行和最后一行之间的行?

来自分类Dev

搜索字符串并使用awk打印第一行的第一列

来自分类Dev

从Spark中的Cassandra的第一行和最后一行减去值

来自分类Dev

MySQL从组的最后一行减去第一行

来自分类Dev

AWK划分第一行和第二行

来自分类Dev

减去另一行

来自分类Dev

如何使用批处理删除文件的第一行?

来自分类Dev

如何使用批处理删除文件的第一行?

来自分类Dev

如何使用sed删除文件的第一行?

来自分类Dev

如何使用sed替换第一行?

来自分类Dev

如何使用ActiveJDBC返回第一行?

来自分类Dev

如何使用Jquery复制表的第一行?

来自分类Dev

如何使用Sed在文件的每一行末尾添加第一行?

来自分类Dev

如何使用sed删除csv文件的第一行和最后一行

来自分类Dev

如何使用sed或awk将单词排成一行?

Related 相关文章

  1. 1

    如何从每个主题的第一行中减去行?

  2. 2

    如何跳过文件的第一行-AWK

  3. 3

    使用awk删除第一行中为“-”的列

  4. 4

    如何从第一行减去第二行并在mysql中生成输出列

  5. 5

    如何从第一行减去第二行并在mysql中生成输出列

  6. 6

    如何在一行前面加上或用awk或sed替换第一行

  7. 7

    如何使用sed或awk打印第一行和段落的模式

  8. 8

    awk打印条件的第一行

  9. 9

    如何从第二列减去每一行并保持第一列

  10. 10

    如何使用awk将第一列和第二列的第一行打印为单列?

  11. 11

    如何从python中的df减去(最后一列,最后一行)减去(最后一列,第一行)

  12. 12

    熊猫,如何从系列中的所有值中减去第一行的值?

  13. 13

    使用awk,在所有列中减去上一行并打印结果

  14. 14

    使用awk,在所有列中减去前一行并打印结果

  15. 15

    如何使用sed显示第一行和最后一行之间的行?

  16. 16

    搜索字符串并使用awk打印第一行的第一列

  17. 17

    从Spark中的Cassandra的第一行和最后一行减去值

  18. 18

    MySQL从组的最后一行减去第一行

  19. 19

    AWK划分第一行和第二行

  20. 20

    减去另一行

  21. 21

    如何使用批处理删除文件的第一行?

  22. 22

    如何使用批处理删除文件的第一行?

  23. 23

    如何使用sed删除文件的第一行?

  24. 24

    如何使用sed替换第一行?

  25. 25

    如何使用ActiveJDBC返回第一行?

  26. 26

    如何使用Jquery复制表的第一行?

  27. 27

    如何使用Sed在文件的每一行末尾添加第一行?

  28. 28

    如何使用sed删除csv文件的第一行和最后一行

  29. 29

    如何使用sed或awk将单词排成一行?

热门标签

归档