繁体   English   中英

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

[英]Using awk, subtract with previous row in all columns and print the result

我需要你在 linux 的一个线性命令中使用 awk 的指导,在所有列中递归地减去前一行的行,然后打印差值。

我输入为

2021-02-15_16 101242 102108 17572 84538
2021-02-15_17 101235 102077 17625 84445

预计 output

 2021-02-15_17  -7  -31 53  -93

我自己尝试过,但没有运气。

    cat test |awk 'NR==1{s=$3;next}{s-=$3}END{print s}' --> this displays only for 1 column

cat test | awk  'NR==1 {for(i=3; i<=NF; i++){s=$i;next}{s-=$i}{print s}}'

您可以使用此awk

awk 'NR > 1 {for (i=2; i<=5; ++i) $i -= a[i]; print} {split($0,a)}' file

2021-02-15_17 -7 -31 53 -93

为了使其更具可读性:

awk 'NR > 1 {
   for (i=2; i<=5; ++i)
      $i -= a[i]
   print
}
{
   split($0,a)
}' file

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM