sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作
ed编辑器自身不会修改文本文件的数据,它只会将修改后的数据发送到STOUT
s命令会用斜线间指定的第二个文本字符串来替换第一个文本字符串
echo "This is a test" | sed 's/test/big test/' #This is a big test
在sed命令上执行多个命令时,只要用-e就可以了
sed -e 's/brown/green/; s/dog/cat/' date1 #将date1中brown替换成green,dog换成cat输出到STOUT
sed可以指定作用的行
sed '2s/dog/cat' data #作用到第2行
sed '2,3s/dog/cat' data #作用到第2,3行
sed '2,$s/dog/cat' data #作用到第2行到结尾行
sed '/Samantha/s/bash/csh' data #作用到匹配Samantha的行上
sed '/rich/s/bash/csh' /etc/passwd #找到含有rich的行,然后用csh替换文本bash
i命令会在指定行前增加一个新行
a命令会在指定的行后增加一个新行
c命令会修改指定的行
y命令用于单个字符的替换 sed y/123/789/
data #data中的1替换成7,2替换成8,3替换成9
r命令允许将一个独立文件中的数据插入到数据流中
$ cat data
This is an added line.
This is the second added line
$ sed '3r data' test
This is line number 1
This is line number 2
This is line number 3
This is an added line.
This is the second added line
This is line number 4
This is line number 5
This is line number 6
This is line number 7