将 grep 与 sed 结合使用

问题描述 投票:0回答:1

尝试查找包含此文本“david_now”的所有文件并替换为此“david_old”

grep -r“david_now”| sed -i 's"david_now"david_old"g'

它在某些文件上失败并停止示例:

sed 没有输入文件 BRF/Test_page.mujebr3.brf:二进制文件匹配

sed grep
1个回答
0
投票

您将 grep 的输出(文件列表)作为 sed 的输入传递。如果您希望 sed 实际操作这些文件,则需要使用

xargs
命令,如下所示:

grep -rl "david_now" | xargs sed -i 's"david_now"david_old"g'

这基本上可以工作,但如果你的文件名包含空格,你需要修改 grep 以在文件名之间使用 NUL 分隔符:

grep -rlZ "david_now" | xargs -0 sed -i 's"david_now"david_old"g'
© www.soinside.com 2019 - 2024. All rights reserved.