gawk 'function report() { printf("File \"%s\" has different number of lines: %d\nIt should be %d\n", FILENAME, FNR, o); exit } NR == FNR { a[NR] = $0; ++o; next } FNR > o { report() } a[FNR] != $0 { printf("Line %d of file \"%s\" is different from line in file \"%s\": %s\nIt should be: %s\n", FNR, FILENAME, ARGV[1], $0, a[FNR]); exit } ENDFILE { if (ARGIND > 1 && FNR != o) report() }' file1 file2 file3
脚本版本:
#!/usr/bin/gawk -f
function report() {
printf("File \"%s\" has different number of lines: %d\nIt should be %d\n",
FILENAME, FNR, o)
exit 1
}
NR == FNR {
a[NR] = $0
++o
next
}
FNR > o {
report()
}
a[FNR] != $0 {
printf("Line %d of file \"%s\" is different from line in file \"%s\": %s\nIt should be: %s\n",
FNR, FILENAME, ARGV[1], $0, a[FNR])
exit 1
}
ENDFILE {
if (ARGIND > 1 && FNR != o)
report()
}
3条答案
按热度按时间f1tvaqid1#
假设我们有3个文件N1 N2 N3要比较。
将所有值添加到一个新的文件中,删除重复项。
然后将每个文件与主文件“out”进行比较,并为每次比较输出Missing。
然后将缺失的值添加到一个文件中,对它们进行排序并删除重复的值。
tktrz96b2#
其实这不是一件容易的事。你可以试试这个它使用GNU awk。
脚本版本:
用途:
ndasle7k3#
如果你已经安装了vim,那么发出这个命令