繁体   English   中英

awk字段计数算法

[英]awk field count arithmetic

我正在尝试对列$ i和列$((i + 33))进行简单的列加法运算,我不确定语法是否正确。

首先将两个文件粘贴在一起,然后对两个文件进行列添加。

谢谢!

paste DOS.tmp DOS.tmp2 | awk '{ printf "%12.8f",$1 OFS; for(i=2; i<33; i++) printf "%12.8f",$i+$((i+33)) OFS; if(33) printf "%12.8f",$33+$66; printf ORS}' >| DOS.tmp3

您是否要在file_1file_2添加列i 在这种情况下,我提供一个示例:

paste <(seq -s' ' 33) <(seq -s' ' 33) | awk '{ for(i=1; i<=33; i++) { printf "%f",$i+$((i+33)) ; if(i!=33) printf OFS;} printf ORS}'

awk ,与在bash不同,在变量名之前,变量扩展不需要美元符号( $ )。 变量的定义类似于a = 2 ,其用法类似于print a

美元符号$ )用于引用(输入)字段 因此, print $1将打印第一个字段,而print $a将打印变量a引用的字段,在本例中为第二个字段。 同样, print $a, $(a+3)将打印第二个和第五个字段(由OFS分隔)。

所有这些加在一起,使您的程序看起来像:

awk '{ out = sprintf("%12.8f", $1)
       for (i=2; i<=33; i++) out = out sprintf("%s%12.8f", OFS, $i+$(i+33))
       print out }' numbers

注意,我们使用sprintf打印所有值输出线变out第一, 串联out = out val ,然后打印具有完整的输出记录print

暂无
暂无

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

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