我试图使用sed命令将所有C头(如#include "library.h" )的目录更改为文件中的#include "prefix/library.h",但我不知道如何在字符串中间添加前缀。到目前为止,我已经尝试过这样的命令:
sed -i "s"\/'#include[[:space:]]*[<"][^>"]*[>"]'\/"$prefix"\/ $filename但是它取代了整个字符串,而不是创建#include "prefix/library.h"。有没有办法在保持原始#include, <, "和间距的同时更改它?
发布于 2019-10-19 12:48:29
你可以用这个:
sed "s%#include[[:space:]]*[<\"]%&$prefix/%" $filename说明:
filename
& sed的分隔符,我使用%作为分隔符,以避免/在#include ",并在匹配之后添加$prefix。发布于 2019-10-19 12:46:59
你能试一下吗。
sed 's/\([^"]*\)\(\"\)\(.*\)/\1\2prefix\/\3/' Input_file输出如下。
#include "prefix/library.h"如果您有一个shell变量,那么请尝试如下。
prefix="prefix"
sed "s/\([^\"]*\)\(\"\)\(.*\)/\1\2$prefix\/\3/" Input_file您的Input_file如下所示:
cat Input_file
#include "library.h"https://stackoverflow.com/questions/58463749
复制相似问题