使用 bash script/shell 脚本读取多个文件

Read multiple files using bash script/shell script

我是 shell/bash 脚本的新手。 我想使用 bash 或 shell 脚本从多个 netcdf 文件中提取数据。 每个文件都包含温度值的时间序列。 例如:

FileA.nc contains 20 20 21 22 23 24
FileB.nc contains 23 24 25 26 27 24
FileC.nc contains 21 20 19 18 22 23

我想提取每个文件的值并合并三个文件的结果。 输出应如下所示,保存为 csv 文件。

A 20 20 21 22 23 24
B 23 24 25 26 27 24
C 21 20 19 18 22 23

最简单的方法是什么? 非常感谢您的帮助。

awk 是你的朋友:

$ arry=( file{A..C}.nc ) # store all the filenames in an array
$ # Then feed all the files to awk like below
$ awk '{printf "%s %s\n",gensub(/file(.)\.nc/,"\1","1",FILENAME),[=10=]}' "${arry[@]}" >newfile
$ cat newfile 
A 20 20 21 22 23 24
B 23 24 25 26 27 24
C 21 20 19 18 22 23

备注

这需要您拥有 [ gnu awk ],我想您已经拥有了。

您可以继续-

for i in {A..C}
do 
echo -n "$i " >> master_file
cat File"$i".nc >> master_file
done 

现在您将拥有一个巨大的文件,其中附加了单独的文件。 现在将空格变成逗号(如果你想要 .csv 格式)

sed -i 's/ /,/g' master_file

在 AWK 中:

$ awk '{gsub(/^file|\.nc$/,"",FILENAME); print FILENAME,[=10=]}' file*.nc
A 20 20 21 22 23 24
B 23 24 25 26 27 24
C 21 20 19 18 22 23