我正在使用此命令从一堆文件中获取行列表,这些文件包括BEGIN并获得$ 1,$ 2,$ 8列以及文件名,并将它们添加到startdate.txt文件中。
awk '/BEGIN/ {print FILENAME,$1,$2,$8}' hb_2019*.log > sdate.txt
下面是结果
hb_20190927121800.log [2019-09-27 20:45:56] ser_message1
hb_20190927121800.log [2019-09-27 20:45:58] claim_response
hb_20190927121800.log [2019-09-27 20:46:00] compound_ingred
hb_20190927121800.log [2019-09-27 20:47:36] pha_ree
hb_20190930103448.log [2019-09-29 10:34:48] ser_message1
hb_20190930103448.log [2019-09-29 11:58:22] claim_response
hb_20190930103448.log [2019-09-29 14:17:28] mcompound_ingred
hb_20190930103448.log [2019-09-29 15:05:48] pha_ree
hb_20190930103450.log [2019-09-30 19:11:25] ser_message1
hb_20190930103450.log [2019-09-30 19:55:59] claim_response
hb_20190930103450.log [2019-09-30 20:17:11] compound_ingred
hb_20190930103450.log [2019-09-30 20:17:13] pha_ree
但是我只想要文件的一个最新结果,而不是所有列表
以下是我正在尝试的方法,但没有运气
awk '/BEGIN/ {print FILENAME,$1,$2,$8}' hb_2019*.log |sort|uniq > sdate.txt
有人面对这个并取得成功吗?
更改此:
awk '/BEGIN/{print FILENAME,$1,$2,$8}' hb_2019*.log |sort|uniq
对此:
awk '/BEGIN/{out[FILENAME]=$1 OFS $2 OFS $8} END{for (fname in out) print fname, out[fname]}' hb_2019*.log
您能不能尝试下面的步骤(由于缺少样本,所以没有对其进行测试。)>
awk '
BEGIN{
OFS=","
}
FNR==1{
if(prev){
print prev
}
prev=""
}
/BEGIN/{
prev=FILENAME OFS $1 OFS $2 OFS $8
}
END{
if(prev){
print prev
}
}' hb_2019*.log