GNU/Linux >> Linux の 問題 >  >> Ubuntu

試合前にすべての行を表示しますか?

grepの結果がbashになる前後の行をフェッチするにはどうすればよいですか?で説明されているように、たとえば10、7、または14だけでなく、一致する前にすべての行を表示したい。

どうすればいいですか?一致した行が含まれているかどうかは関係ありません。

たとえば、次の代わりに:

... | grep -B 10 -- "foo"

欲しい:

... | grep -B -- "foo"

しかし、この最後のコードは機能しません。

承認された回答:

  • 試合を含めて

    sed '/foo/q' file
    

    qを使用することをお勧めします uit sed 一致するものが見つかるとすぐに、それ以外の場合はsed ファイルを読み続けて時間を無駄にしますが、これは大きなファイルの場合はかなりの量になります。

  • 試合を除く

    sed -n '/foo/q;p' file
    

    -n フラグは、pに到達する行のみを意味します コマンドが出力されます。 foo以降 行はqをトリガーします uitアクション、pに到達しません したがって、印刷されません。

    • sedの場合 はGNUであり、これは次のように簡略化できます

      sed '/foo/Q' file
      

参考資料

  1. /foo/ —アドレス
  2. qp —よく使用されるコマンド
  3. Q —GNUSed拡張コマンド
  4. -n —コマンドラインオプション

Ubuntu
  1. Sed、Awk、またはGrepを使用したマルチラインパターンマッチ?

  2. バックスラッシュ文字で終わるすべての行を組み合わせるにはどうすればよいですか?

  3. SedですべてのCコメントを削除しますか?

  1. Sed:パターンマッチの最初の出現のみを印刷しますか?

  2. sed初心者:フォルダー内のすべての出現を変更する

  3. sed 行を結合する

  1. grep は指定された範囲内の行のみに一致します

  2. 一致しない場合の sed の戻りコード

  3. sed - 一致後に X 行の後に行を挿入する