在sed脚本中使用命令替换,并带有参数
|
我正在尝试编写一个简短的脚本,其中我使用sed搜索流,然后根据shell函数的结果对流进行替换,这需要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
(每行之间使用换行符;您的网站格式会删除它们)。好的,该脚本对我有用(输出\“ running test \”),但是显然没有参数传递给test。我希望sed行是这样的:
sed -n -e \"s/.*\\(00\\).*/$(test \\1)/p\" < testfile.txt
并输出:
running test
00
这样,与sed匹配的模式将作为参数进行测试。我并不是真的希望上面的方法能奏效,但是我尝试了$()括号,反引号和转义符的所有组合,但我在任何地方都找不到这种情况。救命?
没有找到相关结果
已邀请:
3 个回复
慷祈霖黑
选项。
如果您不想在线看到stderr,请将其重定向到/ dev / null并拧紧输出。
屑凉赦
或者,如果您使用的是GNU sed:
N.B.您必须记住首先导出函数。
需复
注意:我可能将正则表达式弄错了,但是重要的一点是管道到外壳(
)