希望有人可以帮助我。我想将几千个文件组合成一个文件,但是我需要在组合之前解析每个文件。每个文件都是自己的"站点",在这种情况下是海上风力涡轮机。
每个站点文件首先包含站点号,RATED CAP,IEC CLASS,LATITUDE和LONGITUDE(可以忽略LOSSES%)。
我想修剪每个站点文件的前三行,包括标题。但是,首先我想在每个文件中创建一个包含SITE NUMBER,RATED CAP,IEC CLASS,LATITUDE,LONGITUDE以及DATE,TIME,SPEED80M和NETPOWER的列。我是命令行awk / gawk / sed的业余爱好者,不知道如何使用从文件开头解析的值来创建和填充新列,在本例中是站点号,额定值等。
输入样本(每个站点文件的开头):
SITE NUMBER: 01179 RATED CAP: 20.0 IEC CLASS: 2 LOSSES (%): 16.9
SITE LATITUDE: 43.86593 LONGITUDE: -83.50252
DATE,TIME(UTC),SPEED80M(M/S),NETPOWER(MW)
20040101,0010,10.80,13.75
20040101,0020,10.58,12.50
20040101,0030,10.83,13.32
20040101,0040,11.04,13.61
20040101,0050,11.05,13.91
20040101,0100,10.74,12.86
20040101,0110,10.53,12.74
20040101,0120,10.48,11.88
所需输出(无标题):每行为[SITE,LAT,LONG,RATED_CAP,IEC_CLASS,DATE,TIME(UTC),SPEED80M(M / S),NETPOWER(MW)]
01179,43.86593,-83.50252,20.0,2,20040101,0010,10.80,13.75
01179,43.86593,-83.50252,20.0,2,20040101,0020,10.58,12.50
01179,43.86593,-83.50252,20.0,2,20040101,0030,10.83,13.32
01179,43.86593,-83.50252,20.0,2,20040101,0040,11.04,13.61
即使我添加了大量冗余数据,也是必要的,因为我要将所有站点文件合并为一个,因此需要为每一行设置唯一值来表示它来自哪个涡轮机。解析后,每个原始站点文件将从4列到9列。
非常感谢帮助!提前谢谢。
答案 0 :(得分:2)
这就是你需要的东西:
awk -v OFS=',' '
FNR==1 { split($0,a); next }
FNR==2 { hd = a[3] OFS $3 OFS $5 OFS a[6] OFS a[9]; next }
FNR>3 { print hd, $0 }
' file1 file2 ... fileN