- Linux sed 命令是利用脚本来处理文本文件。
- sed 可依照脚本的指令来处理、编辑文本文件。
- Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
语法
sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数说明
- -e <script>或–expression=<script> 以选项中指定的script来处理输入的文本文件。
- -f <script文件>或–file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
- -h或–help 显示帮助。
- -n或–quiet或–silent 仅显示script处理后的结果。
- -V或–version 显示版本信息。
动作说明
- a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)。
- c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行。
- d :删除,因为是删除啊,所以 d 后面通常不接东西。
- i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)。
- p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行。
- s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g。
举个例子
有一个文件如下:
:cat zhaolu
lu rong ming
zhao lu
将所有出现的lu替换成hello
:sed 's/lu/hello/' zhaolu
hello rong ming
zhao hello
在第二行后插入(注意需要使用\转义空格),这个时候原文件的内容还没有改变:
:sed -e 2a\after\ 2 zhaolu
lu rong ming
zhao lu
after 2
:cat zhaolu
lu rong ming
zhao lu
使用-i改变原文件的内容:
:sed -i 2a\after\ 2 zhaolu
:cat zhaolu
lu rong ming
zhao lu
after 2
删除第三行:
:sed -i '3d' zhaolu
:cat zhaolu
lu rong ming
zhao lu
只显示第一行:
:sed -n '1p' zhaolu
lu rong ming
修改文件:
:cat zhaolu | xargs -n1 | xargs -I {} echo {} >> zhaolu
:cat zhaolu
lu rong ming
zhao lu
lu
rong
ming
zhao
lu
显示有lu的行数(使用-n只显示有字符串的行数):
:nl zhaolu | sed '/lu/p'
1 lu rong ming
1 lu rong ming
2 zhao lu
2 zhao lu
3 lu
3 lu
4 rong
5 ming
6 zhao
7 lu
7 lu
:nl zhaolu | sed -n '/lu/p'
1 lu rong ming
2 zhao lu
3 lu
7 lu
字符串替换,将lu改成82:
:nl zhaolu | sed -n 's/lu/82/p'
1 82 rong ming
2 zhao 82
3 82
7 82