2012-06-05 43 views
0
grep -F "$name" -A1000 filename | sed -n '1p;19p;24p' 

假设let a=10,b=20,c=30。在上面的grep命令中,我可以使用'$ap;$bp;$cp'而不是'1p;19p;24p'吗?另外,我给出了-A1000。这意味着从1p开始考虑到1000线,对吧?我需要在整个文件中搜索而不提供数字。如何在sed命令中包含变量?

+0

使用双,而不是单引号 - ' “$ AP; $ BP; $ CP”' –

+0

@邪恶奥托:我在双引号中尝试过。但是将错误视为无效的路径上下文。 –

+1

成龙,这个问题可以通过命名你正在使用的shell来改进。 –

回答

5

如果要将变量包含在引号内,则需要使用"而不是'

如果要将字母数字后缀添加到变量中,您需要指明它不是其名称的一部分。

sed -n "${a}p;${b}p;${c}p" 

或者:

sed -n "$a"'p;'"$b"'p;'"$c"'p' 
+0

@ PsulP.R.O。 &Banthar:怎么样?-A1000?是否有必要提及相应的行数(1000)?或者可以,如果我只是提到-A? –

+0

@JackieJames我不确定你想达到什么目的。你想[所有行匹配后](http://stackoverflow.com/questions/5968107/get-everything-in-a-file-after-a-grepd-string)? –

+0

@ Banthar:我只想在sed命令中打印行。我怎样才能做到这一点? –