grep --before-context 5
ゲーム開始前に5行を見せてください。
試合前にはすべてを見せたい。
これはgrep --before-context 99999999
効果がありますが、それほど専門的ではありません。
一致するすべてのファイルを表示するには?
答え1
横これにより良いです。
ただし:
sed '/PATTERN/q' FILE
仕組みは次のとおりです。
各行について、次のものと一致することを確認してください/PATTERN
。
- その場合は印刷して終了します。
- それ以外の場合は印刷します。
これは一度見たらPATTERN
終了するので、最も効率的なソリューションです。そうでない場合、q
sed はファイルの処理を実行せずにファイルの残りの部分を読み続けます。大容量ファイルの場合は違いがあります。
このトリックは、以下をシミュレートするためにも使用できますhead
。
sed 10q FILE
答え2
一致を含む最大印刷:
awk '{print} /pattern/ {exit}' filename
sed '/pattern/q' filename
一致を含めずに最大印刷:
awk '/pattern/ {exit} {print}' filename
sed '/pattern/Q' filename
答え3
sed
grepのほとんどの機能を置き換えることができます。
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
このコマンドがスクリプトで使用されている場合は、よりエレガントな(そしておそらくより効率的な)ソリューションを見つけるでしょう。これがワンタイムコマンドであるか、ワンタイムスクリプトであれば問題ありません。