Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Awk 在文件中搜索数字_Awk - Fatal编程技术网

Awk 在文件中搜索数字

Awk 在文件中搜索数字,awk,Awk,如何用awk或更合适的语言编写程序,如果需要的话,可以搜索和写入数字 我有一份档案 0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000

如何用awk或更合适的语言编写程序,如果需要的话,可以搜索和写入数字

我有一份档案

0.0000000  -0.0000000  -0.0000000
   -0.0000000   0.0000000  -0.0000000   0.0000000  -0.0000000  -0.0000000  -0.0000000  -0.0000000   0.0000000   0.0000000   0.0000000
    0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000
    0.0000000   0.0000000   1.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000
    0.0000000  -0.0000000   0.0000000   0.0000000  -0.0000000   0.0000000  -0.0000000   0.0000000   0.0000000  -0.0000000  -0.0000000
   -0.0000000   0.0000000   0.0000000   0.0000000  -0.0000000   0.0000000  -0.0000000  -0.0000000   0.0000000   0.0000000   0.0000000
    0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000
    0.0000000   0.0000000   0.0000000   1.0000000   0.0000000   0.0000000   0.0000000   0.0000000
    0.0000000  -0.0000000   0.0000000   0.0000000  -0.0000000   0.0000000  -0.0000000   0.0000000   0.0000000  -0.0000000  -0.0000000
   -0.0000000   0.0000000   0.0000000   0.0000000  -0.0000000   0.0000000  -0.0000000  -0.0000000   0.0000000   0.0000000   0.0000000
    0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000
    0.0000000   0.0000000   0.0000000   0.0000000   1.0000000   0.0000000   0.0000000   0.0000000
    0.0000000  -0.0000000  -0.0000000  -0.0000000  -0.0000000   0.0000000   0.0000000   0.0000000   0.0000000  -0.0000000  -0.0000000
   -0.0000000   0.0000000   0.0000000   0.0000000  -0.0000000   0.0000000  -0.0000000  -0.0000000  -0.0000000   0.0000000   0.0000000
    0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000
    0.0000000  -0.0000000   0.0000000   0.0000000   0.0000000   1.0000000   0.0000000  -0.0000000
    0.0000000   0.0000000   0.0000000  -0.0000000  -0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000  -0.0000000
   -0.0000000   0.0000000   0.0000000   0.0000000  -0.0000000   0.0000000  -0.0000000  -0.0000000  -0.0000000   0.0000000  -0.0000000
    0.0000000  -0.0000000   0.0000000   0.0000000   0.0000000  -0.0000000  -0.0000000   0.0000000  -0.0000000   0.0000000   0.0000000
    0.0000000  -0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   1.0000000   0.0000000
    0.0000000  -0.0000000   0.0000000   0.0000000  -0.0000000   0.0000000  -0.0000000   0.0000000   0.0000000  -0.0000000  -0.0000000
   -0.0000000   0.0000000  -0.0000000   0.0000000  -0.0000000  -0.0000000  -0.0000000  -0.0000000   0.0000000   0.0000000   0.0000000
    0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000
    0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000   1.0000000

 CHECK OF COMPUTED DEPENDENT VARIABLES FROM NORMAL EQUATIONS

   0.0921839
 -10.1319866
   3.6264119
  11.7262830
 -68.8050967
   0.4522270
   0.3373249
 -34.8902892
 -27.7340970
   1.3273557
  23.1789217
 -21.5330918
  25.0183830
 -41.1342361
  -9.4139492
  67.1457087
 -86.1216513
   0.4522270
   0.9082617
  -3.1807870
  -1.9716431
  -1.1840182
  -3.7907675
  -1.4510456
  -1.1857174
  -4.8308521
  -1.3112015
   1.1611722
  -6.1369640
  -3.5550976
  -4.7666450
  -0.6706241
  -2.2754214
  -2.9594634
  -1.9888614
  -0.9457585
  -0.9477964
 -11.1808337
  -9.6823234
  -6.0165193
  -4.6256076
 SUM OF ABSOLUTE VALUES OF CHECKS IS 0.188070D-10
                      Input-Output in F Format

No.  Curve    Input Param.        Correction     Output Param.    Standard Deviation
 9      0     43.8999000000      2.4976090669     46.3975090669      0.3593736560
10      0      0.0883000000     -0.0008250571      0.0874749429      0.0006398321
11      0      2.5816650000     -0.0033525536      2.5783124464      0.0109309501
12      0      1.0000000000      0.0481656121      1.0481656121      0.0288356492
13      0      1.0000000000     -3.1951648165     -2.1951648165      2.0603892225
14      0      0.0000000000     -0.0002127349     -0.0002127349      0.0017416849
15      0      0.2175000000      0.0015097548      0.2190097548      0.0015804101
16      0     80.4198910000     -4.3952312032     76.0246597968      0.1589276670
17      0      1.0000000000     -2.5673410799     -1.5673410799      0.0871801072
18      0      1.0000000000   -205.4932338114   -204.4932338114     14.4204106262
19      0      3.0000000000     -0.2245759531      2.7754240469      0.0822226758
20      0      1.9424000000      0.1257878585      2.0681878585      0.0430855010
21      0      1.0000000000    -18.7946060528    -17.7946060528      2.0771181978
22      0      1.0000000000     -2.8342434886     -1.8342434886      0.2995629339
23      0      3.5047300000     -0.3237559753      3.1809740247      0.0128735907
24      0      5.5942300000      0.6858315083      6.2800615083      0.0486118539
25      0      0.3827000000     -0.0227502151      0.3599497849      0.0041910161
我想得到

46.397509
0.359373
0.087474
0.000639
....
那么,如何写这样的东西呢 如果F格式的字符串输入输出后的行以9开头,则将$5写入格式%2.6f(小数点后6位),并将$6写入格式%2.6f(小数点后6位)的下一行

输入文件中有一个类似的表,所以我只需要搜索以这个数字开头的第一行。

EDIT2:与OP聊天后,我们知道我们需要在输入文件中的F格式的行匹配
输入输出后打印输入文件中的第5和第6个字段,如下所示

awk '/Input-Output in F Format/{flag=1;next} flag && ($0 ~ /^[0-9]/ ||  $0 ~ /^ [0-9]+/){printf("%.06f\n%.06f\n",$5,$6)}' Input_file
46.397509
0.359374
0.087475
0.000640
......... so on.....


这是你想要的吗?不清楚,但试一下。此处
$(NF-1)
表示倒数第二位,
$NF
表示当前行的最后一个字段。因此,您也可以根据需要更改字段编号

awk 'FNR>4{printf("%.06f\n%.06f\n",$(NF-1),$NF)}' Input_file
输出如下

awk '/Input-Output in F Format/{flag=1;next} flag && ($0 ~ /^[0-9]/ ||  $0 ~ /^ [0-9]+/){printf("%.06f\n%.06f\n",$5,$6)}' Input_file
46.397509
0.359374
0.087475
0.000640
......... so on.....
编辑:因为OP的输入文件可能有制表符分隔的数据,所以建议将
awk
更改为
awk-F'\t'
以在此处进行OP

另外,如果您想在一行中看到列号,则可以运行以下命令

awk '{for(i=1;i<=NF;i++){print "field_number",i,"field value",$i}}' Input_file
或者现在添加上述溶液的非一种线性形式:

awk '
/^$/{
  flag=""
}
/Input-Output in F Format/{
  flag=1
  next
}
flag && ($0 ~ /^[0-9]/ || $0 ~ /^ [0-9]+/) && ($0 !~ /[2][89]/ && $0 !~ /[3][01]/){
  printf("%.06f\n%.06f\n",$5,$6)
}'   Input_file

@Elisabeth,请将输入数据发布在您的帖子中,而不是外部链接中。另外,如果此代码不适用于您,请告诉我,如果不适用,请说明您问题的完整细节。@Elisabeth,您的文件选项卡是否有分隔符?如果是,则尝试执行
awk-F'\t''FNR>4{printf(%.06f\n%.06f\n“,$(NF-1),$NF)}输入文件
?@Elisabeth,也可以运行此命令
awk-F'\t'{(i=1;i@Elisabeth,好的,您的输入文件中的字段似乎比您显示的多,所以请尝试运行命令以了解我现在在编辑解决方案中添加的字段编号,这样您将知道要打印的字段,然后更改相应的字段编号,让我知道?让我们知道。