Shell 简单搜索修改文件 sed

文件的修改的第2种模式:按搜索内容修改。

这里只是简单的搜索与修改,以行为单元。

文件搜索到字符串1,需要:

当前行的下一行添加字符串2、

把当前行整个替换为字符串2、

整行删除。


1 修改命令的语法

/字符串1/操作\字符串2 

查找字符串1所在行,操作(添加、修改、删除)字符串2;

其中两个斜杠/;

如果删除,不用指定字符串2;

字符串2前的\可省略;

如果多行都有字符串1,则默认都会执行相应操作。


常用操作

常用操作 说明
i 前一行添加,insert
a 后一行添加,append
c 修改,change
d 删除,delete

2 示例

准备:

文件data2.txt

111 aa
222 bb
333 ccc cc3
444 dd
555 ee
666 ff
111 gg

第一行与最后一行都有111


例1:找到包含内容333的行,后一行添加 xiaobuteach.com

sed '/333/a\xiaobuteach.com' data2.txt

修改命令 说明

两个斜杠间的内容 即333,要搜索的字符串;

第2个斜杠后的第1个字符:即a,表示在后一行添加

\后的内容:添加内容。

img

省略\的等价代码

sed '/333/axiaobuteach.com' data2.txt

例2:找到内容333,直接在后面追加内容,而不是在下一行。

sed 's/333/&\xiaobuteach.com&/' data2.txt

修改命令的第1个s表示…非常强大,下节专门介绍。


例3:包含内容111的行,它的前1行加000

sed '/111/i\000 ' data2.txt

img

匹配的多行,都会进行操作。


例4:包含111的行,删除它们

sed '/111/d' data2.txt

例5:包含3的行,修改为xxx

sed '/3/c\xxx' data2.txt