首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用sed从行中删除模式

使用sed从行中删除模式
EN

Stack Overflow用户
提问于 2014-10-30 11:13:40
回答 2查看 58关注 0票数 0

我有一个包含文件路径列表的list.txt文件:

代码语言:javascript
复制
/old/file/path/directory
/old/file/path/mydirectory

我想做以下几点:

代码语言:javascript
复制
/path/directory
/path/mydirectory

要做到这一点,我使用sed

代码语言:javascript
复制
OLDPATH=/old/file/


sed "\|$OLDPATH|d" list.txt > newlist.txt

然而,这完全删除了行。如何删除仅使用sed和变量$OLDPATH的部分

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-30 11:16:05

相反,您可以使用以下语法:

代码语言:javascript
复制
OLDPATH="/old/file"
sed "s#$OLDPATH##" list.txt > newlist.txt

这将查找并删除$OLDPATH,而您的|d则删除包含给定模式的行。

对于给定的输入数据,它返回:

代码语言:javascript
复制
/path/directory
/path/mydirectory
票数 1
EN

Stack Overflow用户

发布于 2014-10-30 23:17:28

如果您的所有行都以OLDPATH开头,则可以使用

代码语言:javascript
复制
cut -c $(echo -n "$OLDPATH" | wc -c)-

或者更好的是:

代码语言:javascript
复制
cut -c "$((${#OLDPATH}+1))"-
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26651509

复制
相关文章

相似问题

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