sed :stream editor 行编辑器
vim :交互式编辑器
sed是一种在线编辑器,它一次处理一行内容处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed编辑命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。
sed的优点:sed速度快,在启动vim的时间,sed已经完成了需要执行的操作
s/要替换的部分/替换成的部分
echo "This is a test" | sed 's/test/testing/'
sed 's/dog/cat/' data1
sed '2s/dog/cat/' data1 #指定替换第二行
sed '2,3s/dog/cat/' data1 #指定替换第2和第3行
sed '2,$s/dog/cat/' data1 #指定替换第二行到最后
[root@node2 sed]# sed '2{ #多个要求替换第二行
> s/fox/elephant/
> s/dog/cat/
> }' data1
写法1:
sed -e 's/dog/cat/;s/brown/green/' data1
[root@server1 sed]# sed -e '
> s/brown/red/
> s/dog/cat/
> s/fox/elephant/' data1
-f 命令文件 要替换的文件
sed -f script data1
不加任何参数时默认替换每句中出现第一次的关键字:
sed 's/test/trial/' data2
加上g参数时替换所有出现的关键字:
sed 's/test/trial/g' data2
sed 's/test/trial/2' data2
p显示指定句,通常和-n搭配使用;-n:默认不显示所有内容
sed -n 's/test/trial/p' data3 #只显示修改部分
sed -n 's/number/num/' data3 #使用-n而不使用p参数时,不会有显示
sed -n '/number3/p' data3 #显示匹配到的含有number3的行
sed -n '2,4p' data3 #显示2到4行
将指定部分写入文件
sed 's/test/trial/w test' data3 #将修改的句子写入test文件
sed '1,2w test' test4 #将1到2行写入test文件
sed 's/\bin\/bash/\bin\/csh/' passwd
sed 's!bin/bash!bin/csh!' passwd
sed 's#bin/bash#bin/csh#' passwd
sed 'd' data4 #删除全部,原文本不会被改变
sed '3d' data4 #删除第三行
sed '2,3d' data4 #删除第2到3行
sed '3,$d' data4 #删除第三行到结束的行
echo 'Test Line 2' | sed 'i\Test Line 1' #i表示插入到前面
echo 'Test Line 2' | sed 'a\Test Line 1' #a表示追加到末尾
sed '3i\This is an inserted line' data4 #插入到第三行前面
sed '3a\This is an inserted line' data4 #追加到第三行后面
插入多条:
[root@node2 sed]# sed '1i \
> This is one line of new test.\
> This is another line of new test.\
> new line3.' test4
追加多条:
sed '$a\This is an inserted line.\nThis is another inserted line.' data4
sed '3c\This is a changed line of text.' data4
sed '/number 1/c\This is a changed line of text.' data4
sed '2,3c\This is a changed line of text.' data4
sed 'y/123/789/' data4
当一行中包含多个要修改的单个字符时,默认全部修改:
echo "This 1 is a test of 1 try." | sed 'y/123/456/'
sed '=' data1
sed '3r data5' data1 #将data5添加到data5中第三行后面
sed '/number2/r data5' data4