使用awk使用特定列的平方根创建新文件

Athul RT

我必须在文件test.text的某些特定列中找到值的平方根,然后将结果列写入另一个文件。文件test.txt如下所示。

0004 0015 0018 0007 0015 0009 0003 0018 0012 0007 0013 0010 0018 0015 0002 0020 0007 0005
0010 0018 0015 0018 0007 0011 0010 0004 0013 0017 0016 0010 0019 0003 0002 0016 0005 0009
0002 0011 0015 0014 0008 0017 0002 0001 0015 0004 0008 0008 0002 0011 0015 0015 0009 0011
0013 0020 0005 0007 0007 0004 0019 0011 0001 0008 0013 0015 0015 0012 0007 0019 0009 0016
0003 0003 0020 0015 0007 0017 0005 0010 0012 0012 0009 0004 0016 0006 0014 0019 0001 0001
0014 0006 0016 0003 0008 0017 0002 0001 0011 0015 0014 0008 0016 0006 0014 0019 0012 0007

我必须从2nd,5th,8th,11th ..等列中找到值的平方根,并将它们写入另一个文件。搜索后,我获得了以下代码,仅打印一列的平方根。

awk '{r=$2; print "root=" sqrt(r)}' test.txt 

此代码仅打印第2列值的平方根。

所以我尝试了下面的代码使用for循环。

awk 'BEGIN{FS=" "}{for(r=2;r<=NF;r+=3) printf sqrt($r)}' test.txt >newtest.txt

但是我仍然没有得到期望的结果作为单独的列。我需要newtest.txt文件,其中包含具有test.txt的2nd,5th,8th ..etc平方根值的列的列关于此的任何帮助将不胜感激。

编辑

我期望的示例输出是newtest.txt,如下所示:

3.87298334621 3.87298334621 4.24264068712 3.60555127546 3.87298334621 2.64575131106 
4.24264068712 2.64575131106 2.00000000000 4.00000000000 1.73205080757 2.23606797750
3.31662479036 2.82842712475 1.00000000000 2.82842712475 3.31662479036 3.00000000000
4.47213595500 2.64575131106 3.31662479036 3.60555127546 3.46410161514 3.00000000000
1.73205080757 2.64575131106 3.16227766017 3.00000000000 2.44948974278 1.00000000000
2.44948974278 2.82842712475 1.00000000000 3.74165738677 2.44948974278 3.46410161514
赛勒斯
awk '{for(r=2;r<=NF;r+=3) printf("%.11f ",sqrt($r)); print ""}' test.txt >newtest.txt

输出到newtest.txt:

3.87298334621 3.87298334621 4.24264068712 3.60555127546 3.87298334621 2.64575131106 
4.24264068712 2.64575131106 2.00000000000 4.00000000000 1.73205080757 2.23606797750 
3.31662479036 2.82842712475 1.00000000000 2.82842712475 3.31662479036 3.00000000000 
4.47213595500 2.64575131106 3.31662479036 3.60555127546 3.46410161514 3.00000000000 
1.73205080757 2.64575131106 3.16227766017 3.00000000000 2.44948974278 1.00000000000 
2.44948974278 2.82842712475 1.00000000000 3.74165738677 2.44948974278 3.46410161514

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章