我有一个unicode文本文件的集合(从regedit导出),我想拉出所有带有特定文本的行。
我已经尝试了Grep for Windows和findstr,但两者似乎无法处理unicode编码。我的结果是空的,但是当我使用-v选项(显示不匹配的行)时,输出在每个字符之间显示NUL。
是否有任何免费选项可以在Windows中对Unicode文件执行简单的grep?
答案 0 :(得分:10)
好吧,虽然findstr
无法直接处理Unicode文件,但type
确实可以findstr
实际处理Unicode 输入而没有问题。
所以你需要做的只是
type myfile.txt | findstr /c:"I'm searching for this"
> type uc-test.txt Unicode test. äöüß Another line Something else > findstr "Something" uc-test.txt > findstr /v "Something" uc-test.txt ■U n i c o d e t e s t . õ ÷ ³ ▀ A n o t h e r l i n e S o m e t h i n g e l s e > type uc-test.txt | findstr "Another" Another line
答案 1 :(得分:8)
只是跑过grepWin,这完全符合我的要求。希望我早点发现它!
答案 2 :(得分:3)
绝对与cygwin一起使用(使用x服务器) - 最新支持utf8。在我的最后一场演出中,我正在用CJK角色做很多工作。使用cygwin的x服务器,您可以搜索任何字符并显示您具有固定宽度字体的任何字符。还可以查看od和xxd,这样可以使用十六进制字符轻松输入搜索内容,例如: $ echo'?' | grep $(echo'3f'| xxd -p -r)
答案 3 :(得分:3)
如果你有notepad ++,你可以使用“在文件中查找...”选项来搜索unicode文件。
答案 4 :(得分:2)
我使用http://unxutils.sourceforge.net/中的grep.exe和Windows命令行中的“chcp 65001”命令连接。
答案 5 :(得分:1)
我多年没有使用过windows,但我知道grep的两种替代方法,它们都是用解释语言编写的,因此可以在任何平台上运行:
两者都是命令行工具,但我假设你已经有了一个解决方案,如果你已经使用grep for windows。
看看他们,对不起,我不能帮助一个比这更好的人。
答案 6 :(得分:1)
您可以使用dnGREP。它是另一个支持unicode文件类型的开源grep工具。
答案 7 :(得分:0)
cygwin是你的选择吗?也许内置的grep表现得比你试过的好......
问候
答案 8 :(得分:0)
结帐BareGrep。我认为它会做你想要的。
答案 9 :(得分:0)
perl -CSD -ne'打印如果m {\ Qyour text here here \ E}'file.txt
答案 10 :(得分:0)
我相信Windows中最需要的免费程序是Powershell。例如:
Get-ChildItem -Recurse -path c:\ temp \ * .c | Select-String -pattern" myunicodestring"
或者,如果您只想搜索目录(不在子目录中):
Select-String -path" c:\ mydir \ * .log" -pattern"错误"