Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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 ' /^c/ { X[$2] = $3 } /^c end/ { outfile = X["SatellID="] substr(X["ObsEndDa="],1,4) "." substr(X["SatFilte="],1,1) print "# Original file:", FILENAME, "satellite: " X["SatellID="], "observed: from", X["ObsStaDa="], "to", X["

我有一个工作脚本:

awk '
/^c/ { X[$2] = $3 }
/^c end/ { outfile = X["SatellID="] substr(X["ObsEndDa="],1,4) "." substr(X["SatFilte="],1,1)
           print "# Original file:", FILENAME, "satellite: " X["SatellID="], "observed: from", X["ObsStaDa="], "to", X["ObsStaDa="], "in", X["SatFilte="], "filter" > outfile }
!/^c/ { print $1, $2, $3 >> outfile }' file
我想为文件夹中的更多文件编写一个循环。请问这有什么问题

for file in *__final_flux_full.dat; do 
awk '
/^c/ { X[$2] = $3 }
/^c end/ { outfile = X["SatellID="] substr(X["ObsEndDa="],1,4) "." substr(X["SatFilte="],1,1)
           print "# Original file:", FILENAME, "satellite: " X["SatellID="], "observed: from", X["ObsStaDa="], "to", X["ObsStaDa="], "in", X["SatFilte="], "filter" > outfile }
!/^c/ { print $1, $2, $3 >> outfile }' ; done

没有错误。它在奔跑,什么也不做。谢谢

要修复OP的代码,可以尝试:

for file in *__final_flux_full.dat; do 
awk '
/^c/ { X[$2] = $3 }
/^c end/ { outfile = X["SatellID="] substr(X["ObsEndDa="],1,4) "." substr(X["SatFilte="],1,1)
           print "# Original file:", FILENAME, "satellite: " X["SatellID="], "observed: from", X["ObsStaDa="], "to", X["ObsStaDa="], "in", X["SatFilte="], "filter" > outfile }
!/^c/ { print $1, $2, $3 >> outfile }' "$file" ; done

在理想情况下:对每个文件使用awk语句是一种过度使用,因此您也可以将所有文件传递给您的awk代码,也可以为您的输出文件添加关闭语句,使您不会看到太多打开的文件错误。

要修复OP的代码,可以尝试:

for file in *__final_flux_full.dat; do 
awk '
/^c/ { X[$2] = $3 }
/^c end/ { outfile = X["SatellID="] substr(X["ObsEndDa="],1,4) "." substr(X["SatFilte="],1,1)
           print "# Original file:", FILENAME, "satellite: " X["SatellID="], "observed: from", X["ObsStaDa="], "to", X["ObsStaDa="], "in", X["SatFilte="], "filter" > outfile }
!/^c/ { print $1, $2, $3 >> outfile }' "$file" ; done

在理想情况下:对每个文件使用awk语句是一种过度使用,因此您也可以将所有文件传递给您的awk代码,还要为输出文件添加关闭语句,以使您不会看到太多打开的文件出错。

您需要将文件变量传递给awk命令,以便像$file一样添加,然后它应该会飞起来。我也将其作为一个答案发布,但我想您可以用awk本身阅读此内容;现在我只修复了你的代码,试着运行所有针对awk的文件。你需要将文件变量传递给awk命令,这样添加$file,然后它就会飞起来。我也把它作为一个答案发布了,但我想你可以用awk本身来读这篇文章;现在我只修复了您的代码,请尝试针对awk运行所有文件。