我有一些变量:
$begin=10
$end=20如何将它们传递给sed命令。
sed -n '$begin,$endp' filename | grep word
sed -n '10,20p' filename | grep word发布于 2015-05-28 17:31:03
这不起作用的原因是shell代码中的单引号阻止了变量扩展。最好的方法是使用awk:
awk -v begin="$begin" -v end="$end" 'NR == begin, NR == end' filename如果使用双引号(其中展开shell变量),则可以使用sed:
sed -n "$begin,$end p" filename然而,这容易受到代码注入漏洞的影响,因为sed不能以这种方式区分代码和数据(与上面的awk代码不同)。比方说,如果用户设法设置了end="20 e rm -Rf /;",那么不愉快的事情就会发生。
https://stackoverflow.com/questions/30502356
复制相似问题