我一直在使用grep尝试按照另一个文件中包含的字符串过滤文件。问题是我在数百万的记录上工作,而一些grep没有获得所有的记录。
我将结果导出到两个文件:
两个输出的总和不是原始行数
[ ]$ grep -vwF -f functions.csv whole-data-slice_statement2.csv > output1.csv$
[ ]$ grep -wF -f functions.csv whole-data-slice_statement2.csv > output2.csv$
[ ]$ wc -l whole-data-slice_statement2.csv$
4278709 whole-data-slice_statement2.csv
[ ]$ wc -l output1.csv$
106692 output1.csv
[ ]$ wc -l output2.csv$
2326396 output2.csv
有人可以帮助我理解我做错了什么吗?
答案 0 :(得分:0)
我可以复制它的唯一方法是在我的整个data-slice_statement2.csv文件中使用空字符。如果其中包含特殊字符,file
将返回“数据”。做...
file whole-data-slice_statement2.csv
看看它是否显示“whole-data-slice_statement2.csv:data”。您可以使用tr
清除文件。
编辑:这可能会清除空值而不是EOF。
tr -cd '[:graph:]\n\t ' $file >$tmp_file
答案 1 :(得分:0)
最后,似乎有些无效字符导致grep命令中止,而不是让它以完整集完成。我删除了它们,现在一切正常。 'grep -P“[\ x80- \ xFF]”file.xml'