如何将变量从bash传递给regex

时间:2014-06-19 18:56:05

标签: regex bash sed sh

我正在尝试仅打印包含变量$ foo的行。我尝试过使用双引号和花括号无济于事。在sed中将shell变量传递给正则表达式的正确方法是什么?

sed -n 's:\("${foo}".*$\):\1:p' file.txt

3 个答案:

答案 0 :(得分:6)

如果您实际上不需要修改匹配的行,那么

sed就太过分了。只需使用grep

grep "$foo" file.txt

答案 1 :(得分:1)

尝试使用以下sed命令打印包含赋给变量foo的值的行。

sed -n "/$foo/p" file

答案 2 :(得分:0)

使用单引号可以获得结果

$-pattern='foo'
$-sed 's/('$pattern'.*$)/<\1>/g'
  fo
  fo
  foo
  <foo>