バイナリファイルのマッチング結果をgrepで抑制する方法[終了]


215

grepLinuxで使用する場合、結果には多くの「バイナリファイルXXX一致」が含まれますが、これは気にしません。結果のこの部分を抑制する方法、またはgrepでバイナリファイルを除外する方法


12
grep -I .........

1
@skwllspしかし、-lを指定すると、一致した行は含まれず、一致したファイル名のみが結果に含まれます。
RandyTek

行のオプションがあります:grep -I -n -H

6
これはトピック外ですか?うわー
CoffeeTableEspresso

回答:


301

使用できるオプションは3つあります。-Igrepでバイナリファイルを除外します。その他は、行番号とファイル名用です。

grep -I -n -H 


-I -- process a binary file as if it did not contain matching data; 
-n -- prefix each line of output with the 1-based line number within its input file
-H -- print the file name for each match

だからこれはgrepを実行する方法かもしれません:

grep -InH your-word *

これは機能します。@skwllsp THX
RandyTek

7
私が使用したい-Irn場所rのすべてのフォルダの中を見に再帰の略です。Hここでは非常に重要です
vladkras

@vladkras、「Hはここで非常に重要です」-冗長を意味します。つまり、それはすでにデフォルトですか?
cp.engr

短い選択肢があなたの答えで何を意味するかを明確にしていただきありがとうございます。SOには非常に多くの簡潔なlinuxコマンドの回答があり、説明がありません。
jrahhali

1
@AaronFranke:-nフラグは、一致を見つけたファイルの行番号を報告するようにgrepに指示します。「1ベース」とは、プログラミングでよく行われるように、行カウントがゼロではなく1から始まることを意味します。名前のファイルの最初の行があれば、example.txtであるHello, world、2行目はあるHello cat、と三行目はされcats are cool、その後、経由で「猫」を探してgrep -n cat example.txt、あなたが取得したいexample.txt:2: Hello catexample.txt:3: cats are cool
jvriesem

11

これは古い質問であり、回答されていますが、使用したい人のために--binary-files = textオプションをここに置くと思いました。-Iオプションはバイナリファイルを無視しますが、grepでバイナリファイルをテキストファイルとして処理する場合は、次のように--binary-files = textを使用します。

bash$ grep -i reset mediaLog*
Binary file mediaLog_dc1.txt matches
bash$ grep --binary-files=text -i reset mediaLog*
mediaLog_dc1.txt:2016-06-29 15:46:02,470 - Media [uploadChunk  ,315] - ERROR - ('Connection aborted.', error(104, 'Connection reset by peer'))
mediaLog_dc1.txt:ConnectionError: ('Connection aborted.', error(104, 'Connection reset by peer'))
bash$
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.