gpt4 book ai didi

bash - 仅对包含特定字符串的文件调用 sed - 文件名中的空格问题

转载 作者:行者123 更新时间:2023-11-29 09:25:28 27 4
gpt4 key购买 nike

使用 bash,我尝试在文件中进行替换(将 B 替换为 C ),但仅限于包含特定字符串 A 的文件。 .

我试过了

grep -Rl "A" | xargs sed -i 's/B/C'

但是当文件名包含空格时这会失败

作为一个丑陋的解决方法,我提出了以下用占位符替换空格的解决方案:

for  FILE in `grep -Rl "A"   | tr " " "@"`; 
do F1=`echo $FILE | tr "@" " "`;sed 's/B/C/' "$F1";
done

有没有更优雅的解决方案?

最佳答案

您可以对grep 使用--null,对xargs 使用-0:

grep --null -Rl 'A' . | xargs -0 sed -i '' 's/B/C/'

--nullgrep 命令和 xargs -0 读取 null 终止的每个文件名之后输出一个零字节(ASCII NUL 字符)输入到 xargs

关于bash - 仅对包含特定字符串的文件调用 sed - 文件名中的空格问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39149428/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com