shell脚本中sed的使用详解

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

你可能感兴趣的:(shell脚本中sed的使用详解)