我有一个类似这样的命令:
cat error | grep -o [0-9]
我想将只打印数字,例如2
、30
等的输出作为此数字传递给sed
。
类似这样:
cat error | grep -o [0-9] | sed -n '$OutPutFromGrep,$OutPutFromGrepp'
这可行吗?
我是shell脚本的新手。先谢谢了。
如果意图是打印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。)
cat error | grep -o [0-9]+
之后我有了数据,现在我该如何将它传递给 sed
? - batman是的,您可以将grep的输出传递给sed。
请注意,为了匹配整数,您需要使用[0-9]*而不仅仅是[0-9],后者只会匹配一个数字。
还要注意,在sed参数中使用双引号以扩展变量,并且第二个变量名称似乎有一个拼写错误。
希望这可以帮助您。
echo cat error | grep -o [0-9] | sed -n "$1,$1"
,但是出现了错误:sed: -e expression #1, char 1: unknown command: ','
。 - batmancat error | grep -o [0-9]
:不要 Grep 猫。 - Mehrwolfsed
命令出了问题,但我们看不到。$1
是一个 shell 参数。它的值是多少? - n. m.