sed插入多行

匹配字符串,然后在匹配的行之下插入多行文本,该文本预先写入某个文件
sed -i '/abcd/r /tmp/otherfile' /var/www/file.conf 说明一下,这里的/tmp/otherfile是你要添加的文件内容,file.conf就是你要修改的文件。我这里就不举例说明了。
### 如何使用 `sed` 实现多行注释 在 Linux 中,`sed` 是一种强大的流编辑器工具,能够高效地处理文本数据。要实现多行注释的功能,可以通过定义特定的起始和结束标记来包裹目标区域,并将其替换为带有注释符号的内容。 以下是具体的实现方法: #### 方法一:通过范围选择实现多行注释 如果已知需要注释的多行内容位于某两个标志之间,则可以利用 `sed` 的地址范围功能[^1]。例如,在文件中将从 `START_COMMENT` 到 `END_COMMENT` 范围内的每一行前加上 `#` 符号作为注释: ```bash sed '/START_COMMENT/,/END_COMMENT/{s/^/#/}' filename ``` 此命令会找到所有介于 `START_COMMENT` 和 `END_COMMENT` 之间的行,并在其开头插入一个 `#` 字符以表示注释[^2]。 #### 方法二:原地修改并保存更改 为了直接修改原始文件而不只是打印结果到标准输出,需加入 `-i` 参数[^1]: ```bash sed -i '/START_COMMENT/,/END_COMMENT/{s/^/#/}' filename ``` 这条指令不仅实现了对指定范围内各行加注释的操作,还自动更新了源文件内容[^3]。 #### 方法三:复杂场景下的脚本化处理 当涉及更复杂的逻辑或者频繁使用的模式时,建议创建独立的 `.sed` 文件存储所需执行的一系列变换规则。比如下面这个例子展示了如何构建这样一个外部脚本来完成同样的任务: ```bash #!/bin/sed -f /START_COMMENT/,/END_COMMENT/{ s/^/#/ } ``` 然后应用该脚本至目标文档: ```bash sed -f comment_script.sed filename ``` 以上方式特别适合那些需要重复应用于不同输入材料上的固定转换流程[^3]。 #### 注意事项 - 如果希望取消之前所做的注释(即移除这些行前面可能存在的'#') ,只需稍微调整一下替换部分即可: ```bash sed '/START_COMMENT/,/END_COMMENT/{s/^#\{0,1\}//}' ``` 这将会把任何单独处于行首位置的一个或零个‘#’去除掉[^2]。 --- ### 示例代码块展示 假设有一个名为 testfile.txt 的纯文本档案如下所示: ``` This is line one. /* START_COMMENT */ Line two should be commented out. And so does this third line. /* END_COMMENT */ Here comes another normal sentence without comments. ``` 我们想要给 /* ... */ 这段区间里的所有句子都打上井字号 (#) 开头做备注的话,就可以这样操作: ```bash sed '/\/\* START_COMMENT \*\//,/\/\* END_COMMENT \*\*/ {s/^/# /}' testfile.txt ``` 最终得到的结果将是这样的样子: ``` This is line one. # Line two should be commented out. # And so does this third line. Here comes another normal sentence without comments. ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值