各行に ABC123 などの部分文字列が含まれる大きなファイルがあります。私が実行すると
grep ABC file.txt
また
grep ABC1 file.txt
これらの行は期待どおりに返されますが、実行すると
grep ABC12 file.txt
grep は対応する行を見つけることができません。
これはかなり些細な機能に思えますが、私は grep のヘビー ユーザーではないので、おそらく落とし穴がいくつかあります。
各行に ABC123 などの部分文字列が含まれる大きなファイルがあります。私が実行すると
grep ABC file.txt
また
grep ABC1 file.txt
これらの行は期待どおりに返されますが、実行すると
grep ABC12 file.txt
grep は対応する行を見つけることができません。
これはかなり些細な機能に思えますが、私は grep のヘビー ユーザーではないので、おそらく落とし穴がいくつかあります。
次のようなものを使用します
od -x -a < filename
ファイルの内容を16進数でダンプします。それはあなたがあなたのファイルに持っているものがあなたが期待するものであるかどうかをすぐにあなたに示します。私はそれがそうではないと思う:-)
注:od
ここで役立つオプションがたくさんあります。実際、リストするには多すぎます。
ファイルに0x00などの隠し文字が含まれている可能性はありますか?
行にABC123が含まれている場合は、「grepABC12」がそれらを取得する必要があります。ABC1、ABC2、ABC3など、いくつかの異なる文字列を照合したいということですか?その場合、これを試すことができます:
grep -E 'ABC1|ABC2|ABC3'
問題が何であるかわかりません..正しくgrep
機能します..たとえば、テストファイルの内容は次のとおりです。
$ cat file.txt
ABC
ABC1
ABC12
ABC123
..そしてABC、ABC1、ABC12、ABC123のgrep'ing:
$ grep ABC file.txt
ABC
ABC1
ABC12
ABC123
$ grep ABC1 file.txt
ABC1
ABC12
ABC123
$ grep ABC12 file.txt
ABC12
ABC123
$ grep ABC123 file.txt
ABC123
grep
基本的にはフィルターであり、最初の引数(ABC、またはABC1など)を含む行が表示されます。文字列全体が含まれていない場合、表示されません
これは意味がありません。ファイルに「ABC123」が含まれていますか?
これを確認するには、シェルで次のコマンドを実行します
echo "ABC123" | grep ABC12