[英]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.