首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sed:在变量中间添加一个子字符串

Sed:在变量中间添加一个子字符串
EN

Stack Overflow用户
提问于 2019-10-19 12:36:22
回答 2查看 228关注 0票数 2

我试图使用sed命令将所有C头(如#include "library.h" )的目录更改为文件中的#include "prefix/library.h",但我不知道如何在字符串中间添加前缀。到目前为止,我已经尝试过这样的命令:

代码语言:javascript
复制
sed -i "s"\/'#include[[:space:]]*[<"][^>"]*[>"]'\/"$prefix"\/ $filename

但是它取代了整个字符串,而不是创建#include "prefix/library.h"。有没有办法在保持原始#include, <, "和间距的同时更改它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-19 12:48:29

你可以用这个:

代码语言:javascript
复制
sed "s%#include[[:space:]]*[<\"]%&$prefix/%" $filename

说明:

filename

  • &
  • 您可以使用任何带有sed的分隔符,我使用%作为分隔符,以避免/
  • 中的麻烦:完全匹配的正则表达式。按照这种方式,您刚刚匹配的模式将再次打印。
  • 此命令搜索#include ",并在匹配之后添加$prefix
票数 1
EN

Stack Overflow用户

发布于 2019-10-19 12:46:59

你能试一下吗。

代码语言:javascript
复制
sed 's/\([^"]*\)\(\"\)\(.*\)/\1\2prefix\/\3/'  Input_file

输出如下。

代码语言:javascript
复制
#include "prefix/library.h"

如果您有一个shell变量,那么请尝试如下。

代码语言:javascript
复制
prefix="prefix"
sed "s/\([^\"]*\)\(\"\)\(.*\)/\1\2$prefix\/\3/" Input_file

您的Input_file如下所示:

代码语言:javascript
复制
cat Input_file
#include "library.h"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58463749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档