我正在尝试在一些C代码中更改一些include语句,以便我将在集群上分发一个软件。我使用sed的for循环出错了。我想用“/opt/htslib/gcc48_1.2.1/include/hstlib/”替换我的代码的第242和246行之间的所有“htslib /”实例。这听起来很简单,所以我在for循环中尝试了它来递归目录中的所有文件并更改匹配的行。我的命令如下:
for i in `grep -rl 'htslib/bgzf.h' *`; do sed -i '242,246s/htslib\/opt\/htslib\/gcc48_1.2.1\/include\/htslib\//g' $i; done
但是,在替换中的“htslib”之后我得到一个额外的尾部斜杠,所以它看起来像这样:
/opt/htslib/gcc48_1.2.1/include/htslib//bgzf.h
如果有帮助,include语句就像这样开始:
htslib/bgzf.h
感谢您提出任何观点。