sed的简单用法

sed搜索某一行,然后替换掉该行中的某个字符串

最近在修改yocto的strace-4.11的recipe时遇到一个这样的问题:

先搜索某一行,然后在替换掉该行中的某个字符串.

我想要替换掉Makefile文件中的某一行的某个字符串,比如srcdir = ../../strace-4.11/tests, 要用ptest替换掉:strace-4.11

sed -i -e '/^srcdir/s/strace.*[1-9]/ptest/' file

分析:

-i 表示直接对源文件进行修改
-e 制定执行语句
/^srcdir/ 先搜索匹配该模式的行
s/strace.*[1-9]/ptest/ 中.表示任何单个字符,*表示连续0个或者多个字符,[1-9]表示1-9中任一个数字.
### Linux 中 `sed` 命令的用法 #### 什么是 `sed` `s sed` 是 Stream Editor 的缩写,主要用于对文件中的文本进行查找、替换和其他形式的操作。它可以在不打开文件的情况下完成这些操作。 #### `sed` 命令基本语法 以下是 `sed` 命令的基本结构[^1]: ```bash $ sed {OPTIONS} filename ``` 其中 `{OPTIONS}` 可以包括各种参数和模式匹配表达式,而 `filename` 则是要处理的目标文件名。 #### 替换文本示例 最常用的场景之一就是通过 `sed` 进行字符串替换。下面的例子展示了如何将文件中的某个单词替换成另一个单词: ```bash sed 's/old_word/new_word/' file.txt ``` 上述命令会把每一行的第一个出现的 `old_word` 替换为 `new_word` 并打印到标准输出上。 如果希望全局替换(即每行中所有的实例都被替换),可以加上 `/g` 参数: ```bash sed 's/old_word/new_word/g' file.txt ``` #### 删除指定范围内的行 除了替换外,还可以删除特定范围内的行。比如要删除第2至第4行的内容,可使用如下命令: ```bash sed '2,4d' file.txt ``` 此命令将会移除输入流或者文件里从第二行到第四行之间的所有数据[^3]。 #### 组合多个命令 当需要一次性执行多项修改时,可以通过 `-e` 或者分号(`;`) 来连接多条指令。例如: ```bash # 使用 -e 选项组合命令 sed -e 's/foo/bar/g' -e '2,4d' example.txt # 使用分号组合命令 sed 's/foo/bar/g; 2,4d' example.txt ``` 这两种方式都可以实现先做全局替换再删掉某些行的效果。 #### 高级特性——模式空间与保持空间的应用 对于更复杂的需求,如需保存中间状态供后续步骤调用,则需要用到 **pattern space**(模式空间) 和 **hold space**(保留区) 。这属于较为进阶的技术范畴,在日常简单脚本编写过程中可能较少涉及。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值