sed是一个流编辑器,用来处理文本。它通常用于以下情况:
- 把文本文件整行替换成别的内容
- 把文本文件中指定的文本替换为其他文本
- 根据指定的条件只输出文件中的某些行
- 在文件末尾追加内容
- 删除文件中的某些行
以下是一些常用的sed命令和用法:
- 替换文件中的文本:
sed 's/old/new/g' file
这个命令会把file文件中的所有"old"替换成"new"。 - 替换文件中的特定行:
sed '3aThis is line 3' file
这个命令会在file文件的第3行前插入一行新的文本"This is line 3"。 - 显示文件中特定的行:
sed -n '3p' file
这个命令会打印出file文件的第3行。 - 在文件末尾追加内容:
sed '/pattern/aThis is the new line' file
这个命令会在file文件的每一行末尾(除了包含"pattern"的那一行)都追加一行新的文本"This is the new line"。 - 删除文件中的空行:
sed '/^$/d' file
这个命令会删除file文件中的所有空行。
下面是一些更复杂的sed命令和用法:
- 在匹配到的行的前后添加文本:
sed '/pattern/s/^/Before: /;s/ *$//' file
这个命令会在file文件中匹配到"pattern"的那一行的前面添加一行"Before: ",并且在该行的后面删除所有的空格。 - 使用正则表达式进行匹配:
sed -n '/^[0-9]{3}-[0-9]{2}-[0-9]{4}$/p' file
这个命令会打印出file文件中所有符合日期格式(YYYY-MM-DD)的行。 - 在两个指定行之间插入内容:
sed '3,5i\This is the inserted line' file
这个命令会在file文件的第3行和第5行之间插入一行新的文本"This is the inserted line"。
基本用法
sed [选项参数] ‘command’ filename
- 选项参数说明
选项参数 |
功能 |
-e |
直接在指令列模式上进行sed的动作编辑。 |
- 命令功能描述
命令 |
功能描述 |
a |
新增,a的后面可以接字串,在下一行出现 |
d |
删除 |
s |
查找并替换 |
sxh@learn-basis:shell$ touch sed.txt
sxh@learn-basis:shell$ vi sed.txt
sxh@learn-basis:shell$ cat sed.txt //数据准备
dong shen
guan zhen
wo wo
lai lai
le le
sxh@learn-basis:shell$ sed '2a hi hao' sed.txt
dong shen //将“hi hao”这个单词插入到sed.txt第二行下,打印。
guan zhen
hi hao
wo wo
lai lai
le le
sxh@learn-basis:shell$ cat sed.txt //文件不会有变化,只是输出有变化
dong shen
guan zhen
wo wo
lai lai
le le
sxh@learn-basis:shell$ sed '/wo/d' sed.txt //删除sed.txt文件所有包含wo的行
dong shen
guan zhen
lai lai
le le
sxh@learn-basis:shell$ sed 's/wo/ni/g' sed.txt //将sed.txt文件中wo替换为ni
dong shen
guan zhen
ni ni
lai lai
le le
sxh@learn-basis:shell$ sed -e '2d' -e 's/wo/ni/g' sed.txt
dong shen //将sed.txt文件中的第二行删除并将wo替换为ni
ni ni
lai lai
le le
sxh@learn-basis:shell$