我有一个 utf-8 文件,其中包含一些土耳其文本。 (我的系统是MacOSX)
$ file -I foo.merge
$foo.merge: text/plain; charset=utf-8
当我尝试使用查看一些土耳其语特定字符时grep
,没有问题:
$ grep 'Emiroğlu' foo.merge
EMİROĞLU Emiroğlu+Noun+A3sg+Pnon+Nom Emiroğlu+Noun+Prop+Noun+A3sg+P3sg+Nom Emiroğlu+Noun+Prop+Noun+A3sg+Pnon+Nom NOTFOUND
我还可以使用命令查看该文件,less
没有任何问题。
但是,如果我尝试执行以下操作,土耳其字符将无法正确显示:
$ grep 'Emir' foo.merge | less
EMİROĞLU ESC[1;35;40mESC[KEmirESC[mESC[Koğlu+Noun+A3sg+Pnon+Nom ESC[1;35;40mESC[KEmirESC[mESC[Koğlu+Noun+Prop+Noun+A3sg+P3sg+Nom ESC[1;35;40mESC[KEmirESC[mESC[Koğlu+Noun+Prop+Noun+A3sg+Pnon+Nom NOTFOUND
或者以下也不起作用:
$grep 'Emir' foo.merge > foo2.out
$less foo2.out
可能是什么问题呢?以下是一些附加信息:
$ locale
LANG="en_US.utf-8"
LC_COLLATE="en_US.utf-8"
LC_CTYPE="en_US.utf-8"
LC_MESSAGES="en_US.utf-8"
LC_MONETARY="en_US.utf-8"
LC_NUMERIC="en_US.utf-8"
LC_TIME="en_US.utf-8"
LC_ALL="en_US.utf-8"
答案1
土耳其文字看起来不错。然而 grep 已将颜色代码插入到输出中。
选择:
- 向 grep添加选项
--color=never
(删除颜色)。 - 向 less添加选项
-R
(告诉 less 解释 ASCII 颜色代码)。