10

私はこのようなコマンドを持っています:

cat error | grep -o [0-9]

2などの数字のみを出力30しています。次に、この番号をに渡したいと思いsedます。

何かのようなもの :

cat error | grep -o [0-9] | sed -n '$OutPutFromGrep,$OutPutFromGrepp'

そうすることは可能ですか?

私はシェルスクリプトを初めて使用します。前もって感謝します

4

3 に答える 3

5

grep返された行を出力することが意図されている場合は、sedスクリプトを生成するのがよいでしょう:

grep -E -o '[0-9]+' error | sed 's/$/p/' | sed -f - error
于 2012-09-05T07:54:04.913 に答える
2

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を修正しました。)

于 2012-09-05T07:28:57.677 に答える
0

はい、grepからsedに出力を渡すことができます。

整数を一致させるには、1桁のみに一致する[0-9]だけでなく、[0-9]*を使用する必要があることに注意してください。

また、(sed引数で)変数を展開するには二重引用符を使用する必要があり、2番目の変数名にタイプミスがあるようです。

お役に立てれば。

于 2012-09-05T07:22:19.743 に答える