一致するすべてのファイルを表示

一致するすべてのファイルを表示

grep --before-context 5ゲーム開始前に5行を見せてください。

試合前にはすべてを見せたい。
これはgrep --before-context 99999999効果がありますが、それほど専門的ではありません。

一致するすべてのファイルを表示するには?

答え1

これにより良いです。

ただし:

sed '/PATTERN/q' FILE

仕組みは次のとおりです。

各行について、次のものと一致することを確認してください/PATTERN

  • その場合は印刷して終了します。
  • それ以外の場合は印刷します。

これは一度見たらPATTERN終了するので、最も効率的なソリューションです。そうでない場合、qsed はファイルの処理を実行せずにファイルの残りの部分を読み続けます。大容量ファイルの場合は違いがあります。

このトリックは、以下をシミュレートするためにも使用できますhead

sed 10q FILE

答え2

一致を含む最大印刷:

awk '{print} /pattern/ {exit}' filename
sed '/pattern/q' filename

一致を含めずに最大印刷:

awk '/pattern/ {exit} {print}' filename
sed '/pattern/Q' filename

答え3

sedgrepのほとんどの機能を置き換えることができます。

sed -n '1,/<pattern>/ p' <file>

これは、パターンが一致するまで最初の行から印刷を開始することを意味します。

いくつかの範囲の例

sed -n '/<pattern>/,$ p' <file> # from pattern to end of file
sed -n '/<pattern1>/,/<pattern2>/ p' <file> # from pattern1 to pattern2

答え4

日常業務に必要な基本的なツールだけを覚えていて、あまりエレガントで効率の低いソリューションに満足したい人のために:

head -n $(grep -n pattern filename | cut -d: -f1) filename

このコマンドがスクリプトで使用されている場合は、よりエレガントな(そしておそらくより効率的な)ソリューションを見つけるでしょう。これがワンタイムコマンドであるか、ワンタイムスクリプトであれば問題ありません。

関連情報