grep -A 10 -f smallfile bigfile
grepする小型ファイルからすべての行を過ぎGREPライン大型ファイルと次の10行で
それはgrepを維持するために-Aの代わりに別のフラグを使用することにより可能です大文字の中に文字が現れるまでの行数(@と言うことができます)と、私はsmallfileから数百行の行を処理する必要があります。また、grepに必要なsmallfileの行の後ろに何行もありません。それぞれについて。あなたが別の方法を知っている場合ので、私はそれがこのに私に
@123
abc
def
ghj
@555
yui
wer
を与えたい
@123
abc
def
ghj
@789
sdf
tyu
rzx
@555
yui
wer
@435
teg
gdgd
:
小型ファイル:
@123
@555
大型ファイルだけの行のいずれかを示す例これを行うことができる別のファイルの1つのファイルから "grepping"行を削除すると、それも機能します。私はPythonスクリプトやもっと複雑なループが必要ですが、grepに-mのようなフラグを使用させる方法があるはずですが、私が望むように動作させることはできませんでした。
多くのありがとうございます!
なぜawk'と 'perl'のようなより高度なツールに切り替えませんか? – osgx
'csplit bigfile/^ \ @ /' – jm666
@DragonRider、標準gnu grepにこのようなオプションはないようです:http://git.savannah.gnu.org/cgit/grep.git/tree/src/grep .c#n1301 'prtext .. pending = out_quiet? 0:MAX(0、out_after); .. prpending'とlimはバッファの終わりを指すポインタです。単一パターンのAWKソリューション:http://stackoverflow.com/questions/29180929/ perl multiline regexp in grep&sed。 – osgx