【发布时间】:2017-04-09 02:13:51
【问题描述】:
我想比较 Today.txt 和 Main.txt 的文件名。 如果匹配,则打印 Main.txt 匹配文件的所有 6 列,并使用新文件 match.txt。
以及与Main.txt不匹配的文件,然后在一个新文件中列出TODAY.txt的文件名和时间,说unmatched.txt
注意:加号(+)表示文件来自inprogress目录,有时文件名会附加“+”。
Main.txt
date filename timestamp space count status
Nov 4 +CHCK01_20161104.txt 06:39 2.15M 17153 on_time
Nov 4 TRIPS11_20161104.txt 09:03 0.00M 24 On_Time
Nov 4 AR02_20161104.txt 09:31 0.00M 7 On_Time
Nov 4 AR01_20161104.txt 09:31 0.04M 433 On_Time
今天.txt
filename time
CHCK01_20161104.txt 06:03
CHCK05_20161104.txt 11:10
CHCK09_20161104.txt 21:46
AR01_20161104.txt 09:36
AR02_20161104.txt 09:36
ifs01_20161104.txt 21:16
TRIPS11_20161104.txt 09:16
所需的输出: 匹配的.txt
Nov 4 +CHCK01_20161104.txt 06:39 2.15M 17153 on_time
Nov 4 TRIPS11_20161104.txt 09:03 0.00M 24 On_Time
Nov 4 AR02_20161104.txt 09:31 0.00M 7 On_Time
Nov 4 AR01_20161104.txt 09:31 0.04M 433 On_Time
unmatched.txt
CHCK05_20161104.txt 11:10
CHCK09_20161104.txt 21:46
ifs01_20161104.txt 21:16
下面的命令给了我正确的输出,除非文件附加了加号(+)。
awk 'FNR==1{next}
NR==FNR{a[$1]=$2; next}
$3 in a{print; delete a[$3]}
END{for(k in a) print k,a[k] > "unmatched"}' today main > matched
提前非常感谢!
【问题讨论】: