【发布时间】:2014-08-10 10:42:38
【问题描述】:
我试图只打印包含变量 $foo 的行。我试过使用双引号和花括号无济于事。在 sed 中将 shell 变量传递给正则表达式的正确方法是什么?
sed -n 's:\("${foo}".*$\):\1:p' file.txt
【问题讨论】:
-
你确定你的问题是传递变量吗?当你使用字面值时,你是否验证过匹配?
-
单引号防止变量替换。你需要做这样的事情:
sed -n 's:\('"${foo}"'.*$\):\1:p' file.txt。在该行上使用 echo 来查看(或多或少)发生了什么。