0

ここに私の問題の完全に簡単な説明があると確信していますが、それは私を混乱させました。

次の文字列をファイルで検索するcentos標準grepを使用しています。

0.000 kB / 0.0 sec

私はこれを何百万回も行ったことがあり、問題が発生したことはないと確信していますが、今はこれを取得しています:

grep "0.000 kB / 0.00 sec" flash.log

672.881 kB / 0.95 sec

私もこれを試したので、問題となるのは「/」ではありません:

grep "000" flash.log

672.881 kB / 0.95 sec

ここで1として反応しているように見えても、0は特殊文字ではないことを理解しましたか?

私はこれを使用して問題を修正できることを知っています:

grep -e "0.000 kB / 0.00 sec" flash.log

しかし、パターンに-eを使用して違いが何であるか、0の意味が何であるか、またはgrepがそれをどのように解釈しているかを理解していないだけですか?

4

1 に答える 1

4

最初に一致した行には、おそらく行末があり^Mます。grep出力をcat -Aまたはlessまたはhdにパイプして、実際に取得しているものを確認し、ターミナルに解釈させないようにします。^Mキャリッジリターンを意味するため(改行ではなく、Carlに感謝)、カーソルが行の先頭にジャンプして、実際の一致を上書きします。これが私の例のflash.logで、あなたが説明したのと同じように動作します。

0.000 kB / 0.00 sec^M672.881 kB / 0.95 sec

vi -bまたはでそれを見てくださいcat -A

于 2013-01-17T22:02:43.347 に答える