我有一个像这样的文件
0001;4;5;30;33;41;52
0002;9;37;39;41;43;49
0003;10;11;29;30;36;47
0004;1;5;6;27;42;59
0005;1;2;6;16;19;46
0006;7;13;19;22;40;47
0007;3;5;20;21;38;56
... etc
第一个数字是计数器,后面六个是 1 或 2 位数字。
该文件有数千行这样的。它从 1 开始,一直到 9999。
有没有办法检查是否缺少一行?我的意思是,如果从第一行到最后一行的所有数字都存在?
我的意思是这样的:
0001;4;5;30;33;41;52 // first line
0002;9;37;39;41;43;49
0003;10;11;29;30;36;47
...
9999;3;4;8;12;55;88 // last line
0001 和 9999 之间是否缺少任何行?
假设:
0001;4;5;30;33;41;52
0002;9;37;39;41;43;49
0003;10;11;29;30;36;47
0004;1;5;6;27;42;59
0006;7;13;19;22;40;47
看?0005 不见了。
作为奖励,最好检查所有七个数字是否由;
任何其他字符而不是任何其他字符分隔。
谢谢
AWK
解决方案(假设你的如果它打印第一个就好了):示例文件
input.csv
:用于检查是否缺少一行的条件:
输出:
用于检查所有七个数字是否由 分隔的
;
条件:输出:
除了接受的答案之外,要查找任何带有不需要字符的行:
这将输出文件中包含不是数字或分号的字符的任何行。用于
grep -n
查找这些违规行的行号。