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,表示在后一行添加
\后的内容:添加内容。
省略\的等价代码
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
匹配的多行,都会进行操作。
例4:包含111的行,删除它们
sed '/111/d' data2.txt
例5:包含3的行,修改为xxx
sed '/3/c\xxx' data2.txt