我的文件test.csv
Col1,Col2,Col3,Col4
1,AAA,1,
2,BBB,0,
3,CCCÆ,,ttt
4,DDD,1,
5,EEE,0,预期产出:
3,CCCÆ,,ttt试过:
grep -a "[^\x20-\x7e]+" test.csv
grep -a '[^\x20-\x7e]+' test.csv
grep "[^\x20-\x7e]+" test.csv
grep '[^\x20-\x7e]+' test.csv也尝试了标志-P和-E,但都没有返回我想要的结果。在Powershell中,我做了
Select-String -Pattern '[^\x20-\x7E]+' test.csv它还给了我预期的结果。
有人能指点我去MINGW64 bash grep (GNU grep) 3.1 on Windows10的正确方向吗?它是通过git下载windows来安装的:https://git-scm.com/download/win
发布于 2020-04-26 12:59:38
grep中的POSIX和ERE语法似乎不支持\xXX表示法。
您可以使用-P选项启用PCRE引擎,然后使用
grep -P "[^\x{00}-\x{7E}]" file或,
grep -P "[^[:ascii:]]" file若要查找任何包含非ASCII字符的行,请执行以下操作。
注意到,您不能使用[^\x20-\x7E]范围,因为CR (以[^\x20-\x7E]文本文件结尾的部分)将得到匹配,除最后一行之外的所有行(如果后面没有尾随换行)将得到匹配。不过,您可以将CR符号添加到否定字符类中,并使用grep -P "[^\x{0D}\x{20}-\x{7E}]" file。
发布于 2020-04-26 11:35:30
如果您可以直接使用perl,则可以这样做:
perl -ne 'print if (/[^\x00-\x7F]/)' test.csvhttps://stackoverflow.com/questions/61439739
复制相似问题