这怎么可能呢(两个正则表达式是相同的):
tmp$ grep "^[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*$" 2018.csv > 2018a.csv
tmp$ grep -v "^[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*$" 2018.csv > 2018-wrong.csv
tmp$ wc -l 2018*
289211 2018a.csv
292005 2018.csv
1 2018-wrong.csv
我想将文件 2018.csv 拆分为两组,2018a.csv 包含与模式匹配的行,2018-wrong.csv 包含不匹配的行。由于这是非此即彼的,所以每行都放在两个文件之一中,因此两个文件中的行数总和应该与输入文件中的行数相匹配。为什么文件 2018a.csv 和 2018-wrong.csv 的行数总和不等于文件 2018.csv 中的行数?为什么缺少 2795 行?
知道为什么行数总和不匹配吗?
答案1
答案在 2018-wrong.csv 文件中,其中包含一行:
二进制文件 2018.csv 匹配
由于一些变音符号,该文件不是纯文本文件...
当我使用 grep -a 和 grep -av 进行 grepping 时,行数相加。