我想将所有行保存在另一个文本文件中以某个字符串开头的文本文件中。所以,我用这个grep
命令来做到这一点:
grep '^This' input.txt > output.txt
但是输出文件output.txt
是空的,尽管文件中有很多行以input.txt
“this”开头。我的一位导师建议该文件input.txt
采用UTF-16 LE
格式并要求我将其更改为UTF-8
. 然后命令运行良好。
为什么 grep 命令不适用于具有UTF-16 LE
格式的文件?
grep
不知道编码。它不搜索“字符”,而是搜索bytes。您的控制台正在发送 UTF-8/ASCII 编码的文本(在本例中与字符串“^This”相同)以grep
供搜索。如果文件包含 UTF-16 编码的文本,则不会匹配,因为字节表示不同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句