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运行所有文件。