Neu*_*ino 15 bash replace pipeline sed
我需要在sed中使用命令的输出作为搜索模式.我将使用echo做一个例子,但假设这可能是一个更复杂的命令:
echo "some pattern" | xargs sed -i 's/{}/replacement/g' file.txt
Run Code Online (Sandbox Code Playgroud)
该命令不起作用,因为"某些模式"有一个空格,但我认为这清楚地说明了我的问题.
如何使该命令有效?
提前致谢,
Wee*_*etu 19
你需要告诉xargs用-I开关替换什么 - 它似乎并不自动地知道{},至少在某些版本中.
echo "pattern" | xargs -I '{}' sed -i 's/{}/replacement/g' file.txt
Run Code Online (Sandbox Code Playgroud)
请改用命令替换,因此您的示例如下所示:
sed -i "s/$(echo "some pattern")/replacement/g" file.txt
Run Code Online (Sandbox Code Playgroud)
双引号允许命令替换工作,同时防止空格被拆分.
这适用于Linux(已测试):
find . -type f -print0 | xargs -0 sed -i 's/str1/str2/g'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33355 次 |
| 最近记录: |