我正在尝试编写一个简短脚本,其中我使用sed来搜索流,然后基于shell函数的结果执行对流的替换,该函数需要参数来自sed,例如在sed脚本中使用命令替换,使用参数
#!/bin/sh
function test {
echo "running test"
echo $1
}
sed -n -e "s/.*\(00\).*/$(test)/p" < testfile.txt
其中TESTFILE.TXT包含:
1234
2345
3006
4567
(每间换行;他们越来越贵网站格式化删除)。所以,确定该脚本适用于我(输出“运行测试”),但显然没有传递给测试的参数。我想sed的行是这样的:
sed -n -e "s/.*\(00\).*/$(test \1)/p" < testfile.txt
和输出:
running test
00
使得由sed的匹配的模式被馈送作为参数进行测试。我并没有真正期望上面的工作,但我已经尝试了每个组合的$()方括号,反引号和我能想到的转义,并且在任何地方都找不到这种情况。帮帮我?
如果您使用的是GNU sed,请阅读e命令;)http://www.gnu.org/software/sed/manual/sed.html#Extended-Commands – 2013-02-28 15:27:39