パターンを1行で改行するスクリプト(改行なし)があります。 grep
stock_ticker
をその行に入れて、見つけたらすぐに出力したいと思います。これで、スクリプトは終了せず、本質的に無限にループします。
これに取り組む方法の1つは、おそらく入力ストリームをラインに分割してそれをgrepにパイプすることだと考えました。出力をgrep
できることを理解しています。ただし、私の理解によれば、grep
、sed
、awk
からすべてを1行ずつ読み取ります。
とにかく、この動作を変更してこれに取り組むことができますか?
./a.out | grep 'stock_ticker'
現在Memory exhausted
を出力します。これは、grepが出力を出力する前に1行ずつ読み取るためです。その行動を変えたいと思います。どのようなアイデアですか?
改行がない場合、grepはすべての入力をバッファリングするため、文字列が表示される「行」を表示できます。
2つの質問:
隣接するコンテンツのコンテキストが不要で、トークンを区切るスペースがある場合は、trを使用してスペースを改行に変換します。
./a.out | tr ' ' '\n' | grep 'stock_ticker'
隣接するコンテンツが必要な場合は、オプションの1つを追加するだけです-C
-A
または-B
をgrepコマンドに追加します。これにより、grepで検索パターンのティッカーの前後に「行」を表示できます。