1. ホーム
  2. shell

[解決済み] バイナリデータを含むテキストファイルを grep するには?

2022-05-17 08:48:26

質問

grepの戻り値

バイナリファイルtest.logにマッチ

例えば

echo    "line1 re \x00\r\nline2\r\nline3 re\r\n" > test.log  # in zsh
echo -e "line1 re \x00\r\nline2\r\nline3 re\r\n" > test.log  # in bash
grep re test.log

結果には1行目と3行目(合計2行)が表示されればいいのですが。

このような場合 tr を使って、印刷できないデータを読めるデータに変換し、grepが再び動作するようにすることは可能ですか?

どのように解決するのですか?

データファイルを cat -v を通して実行することができます。

$ cat -v tmp/test.log | grep re
line1 re ^@^M
line3 re^M

を使えば、さらに後処理でゴミを取り除くことができます。 tr を使用することについてのあなたの質問に最も類似しています。

-v は単に cat に非印刷文字を表示するように指示します。