私はこのようなコマンドを持っています:
cat error | grep -o [0-9]
2
などの数字のみを出力30
しています。次に、この番号をに渡したいと思いsed
ます。
何かのようなもの :
cat error | grep -o [0-9] | sed -n '$OutPutFromGrep,$OutPutFromGrepp'
そうすることは可能ですか?
私はシェルスクリプトを初めて使用します。前もって感謝します
grep
返された行を出力することが意図されている場合は、sed
スクリプトを生成するのがよいでしょう:
grep -E -o '[0-9]+' error | sed 's/$/p/' | sed -f - error
xargs
あなたはおそらく、特に-I
オプションを探しています:
themel@eristoteles:~$ xargs -I FOO echo once FOO, twice FOO
hi
once hi, twice hi
there
once there, twice there
あなたの例:
themel@eristoteles:~$ cat error
error in line 123
error in line 234
errors in line 345 and 346
themel@eristoteles:~$ grep -o '[0-9]*' < error | xargs -I OutPutFromGrep echo sed -n 'OutPutFromGrep,OutPutFromGrepp'
sed -n 123,123p
sed -n 234,234p
sed -n 345,345p
sed -n 346,346p
実際に使用する場合は、入力ファイルを渡して。sed
を削除することをお勧めしますecho
。
(ちなみに、UUOCを修正しました。)
はい、grepからsedに出力を渡すことができます。
整数を一致させるには、1桁のみに一致する[0-9]だけでなく、[0-9]*を使用する必要があることに注意してください。
また、(sed引数で)変数を展開するには二重引用符を使用する必要があり、2番目の変数名にタイプミスがあるようです。
お役に立てれば。