(可能) grep と less の一貫性のない動作

(可能) grep と less の一貫性のない動作

トルコ語のテキストを含む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(ASCIIカラーコードを解釈するにはLessに指示します)。

おすすめ記事