問題のあるgrepを解決するためにファイルタイプとエンコーディングを比較する方法はありますか?

問題のあるgrepを解決するためにファイルタイプとエンコーディングを比較する方法はありますか?

この場合、生成された.txtファイルを使用してフォルダがあります。ドラッグ、コピー、貼り付けAdobe Acrobat PDFおよびOSXのテキストエディタで。私はvimでこれらのファイルを編集してきました。 grepを使ってこのファイルでコメントを見つけます。例えば、

grep -c "\[t\]" Herbert*

[t]はコメントであり、ディレクトリには名前プレフィックスHerbert*(たとえば、、Herbert-02-Transformation.txtHerbert-14-Classification.txtが付いた22個のファイルがあります。問題は、grep検索文字列が1つのファイル()でのみ見つかるのですHerbert-03-Square.txtが、同じコメントがファイルごとに複数回表示されることです。

converted間違ったファイルを開くと、ステータスバーに表示されます。

"Herbert-02-Transformation.txt" [converted] 276L, 57171C

unix.stackの投稿元のファイルの特殊文字がPDFからvimへのプロセスで生き残って問題を引き起こしているようですgrep。粗い文字を削除し、正しい文字を手動で挿入しました:digraphs。編集したファイルの一部はgrepで検索できますが、他の編集されたファイルは検索できません。使ってみましたが、

:e Herbert-02-Transformation.txt
:set encoding=utf-8` 
:w

しかし、上記のようにファイルはまだ開いています。それではgrep、動作するファイルと機能しないファイルのエンコーディングを比較する方法を理解する必要があると思います。詳しく説明する適切なヘルプページがあります。ファイル検出を設定する方法この問題を避けるために、私はこの問題を調査するのに1.5時間以上費やしていましたが、これは良い質問だと思います。

ベストアンサー1

最も簡単な方法は、問題ファイルの1つから次に数行を渡すことですod

head Herbert-02-Transformation.txt | od -c

あるいは、最初の行に奇妙な点がない場合は、特定の文字列とその周囲のいくつかの文字を探します。

od -c Herbert-02-Transformation.txt | grep -C 5 "\["

たとえば、

$ echo "lorem ipsum [t] dolor sit amet" > foo.txt
$ od -c foo.txt 
0000000   l   o   r   e   m       i   p   s   u   m       [   t   ]    
0000020   d   o   l   o   r       s   i   t       a   m   e   t  \n
0000037

「奇妙な」文字が表示されますod


別の便利なツールは、fileファイル形式やその他の情報を返します。

$ file --mime foo.txt 
foo.txt: text/plain; charset=us-ascii

おすすめ記事