我有三个文件,我想使用 awk 比较前两个文件,然后用第一个文件中不匹配的名称更新最后一个文件。
文件 1:ignore.txt
bob
diana
文件 2:list.txt
alice
bob
chris
diana
elvis
文件 3:names.txt
alice
chris
elvis
文件 2 每隔一段时间就会添加新名称,因此我必须能够将它与其他两个文件进行比较,并将该列表中的任何新名称添加到 names.txt。
到目前为止,这是我的脚本,比较 List 和 ignore 正在工作,但它没有进行更新,因为我仍然不明白如何正确使用getline
新数组并将其与内存中的文件进行比较。
我将脚本称为:awk -f compare ignore.txt list.txt
并且它有效。如果我用额外的变量调用它,它不会这样做:awk -f compare -v newnames=1 ignore.txt list.txt
.
BEGIN {
file="list.txt"
tmpfile="new_list.txt"
}
# working
FNR == NR { names[$0]++; next }
!names[$0] {
print > names.txt
}
{ #not working
if (newnames == 1) {
mvcmd="mv " tmpfile file;
while ((getline newnames < file) > 0)
newnames[$0]++; next
!newnames[$0];
print > tmpfile
system(mvcmd)
close(dbfile)
}
我怎样才能让它工作?代码不是很好,因为我觉得它令人困惑。对不起。