<分区>
如果这被证明是一个愚蠢的问题,我很抱歉,但我只是不知道我的 sed 命令可能出了什么问题。
这是我拥有的全部命令:
file="hello_world.cpp"
grep -lrI "$file" dir/ | xargs sed -i 's/\(\$file\)/\1\.bin/'
基本上我正在搜索包含字符串“hello_world.cpp”的任何文件,然后将它们传递到 sed 以将扩展名 .bin 附加到字符串(是的,这可能没有意义,但我只是使用通用的例如。我的工作确实需要这个特定的功能)。
我遇到的问题是,虽然 grep 和字符串分配按预期工作,但 sed 命令不是。更让我困惑的是,下面的命令是有效的。
grep -lrI "$file" dir/ | xargs sed -i 's/\(hello_world.cpp\)/\1\.bin/'
这会将所有包含字符串“hello_world.cpp”的文件中的字符串“hello_world.cpp”替换为“hello_world.cpp.bin”,这正是我想要的样子。
如果有人能帮助指出我的错误,将不胜感激。谢谢。