我的计算机上的应用程序需要读入文本文件。我有几个,一个不起作用;程序无法读取并告诉我某处有一个坏人物。我的第一个猜测是那里有一个非ascii字符,但我不知道如何找到它。 Perl或任何通用正则表达式都会很好。有什么想法吗?
答案 0 :(得分:12)
您可以使用[^\x20-\x7E]
匹配非ASCII字符。
e.g。 grep -P '[^\x20-\x7E]' suspicious_file
答案 1 :(得分:4)
perl -wne 'printf "byte %02X in line $.\n", ord $& while s/[^\t\n\x20-\x7E]//;'
将查找不是ASCII字形字符,制表符,空格或换行符的每个字符。
如果它在O.K.文件中报告0D
s(回车),则将\t\n
更改为\t\n\r
。
如果它只在错误的文件中报告0D
,那么您可以通过在其上运行dos2unix
来修复这些文件。
答案 2 :(得分:2)
如果您在源代码中也使用制表符,请尝试以下模式:
[^\x08-\x7E]
也可以在Notepad ++中使用