【发布时间】:2015-12-21 16:21:29
【问题描述】:
要求是比较两个巨大的Unix文件,并在搜索几个选项后根据唯一键(第一个字段)将差异写入第三个文件,得到以下命令:
awk 'FNR==NR{a[$0];next}!($0 in a)' hosts.csv masterlist.csv>results.csv
虽然这给出了差异,但如果对于一个字段,一个文件包含 NULL(作为一个单词)和其他空值/空格,如何在命令中忽略这一点并比较其他字段?
还想用这些选项制作一个通用脚本或实用程序,不需要代码,但只是一个建议会有所帮助。
【问题讨论】:
-
diff不是一个选项吗? -
请发minimal reproducible example,否则太抽象了,不知道你在找什么。
-
@commuSoft: 尝试使用 sdiff -W... 但也需要忽略 Null .. 所以检查我们是否有更好的方法
-
听起来您对匹配的内容有非常具体的要求。尝试处理文件以将所有 NULL 更改为空格,然后比较它们。
-
@Neil Masson:用“sed '/NULL//g' 文件名”尝试了那个选项......因为这会贯穿整个文件,然后是匹配操作......会不会有那么激烈命令?