文本名称list


1.在文本每行后添加一行空格

sed G list


2.删除文本中空行并在每行后添加一行空行

sed '/^$/d;G' list


3.删除偶数行

sed 'n;d' list


4.在匹配式样“regex”的行之前插入一空行

sed '/regex/{x;p;x;}' list


5.在匹配式样“regex”的行之后插入一空行
sed '/regex/G'


6.在匹配式样“regex”的行之前和之后各插入一空行
sed '/regex/{x;p;x;G;}'


7.为文件中的每一行进行编号

sed = list| sed 'N;s/\n/\t/'


8.将每一行中的前导和拖尾的空白字符删除

sed 's/^[ \t]*//;s/[ \t]*$//'


9.在每一行中查找字串“foo”,并将找到的“foo”替换为“bar”
sed 's/foo/bar/'                 # 只替换每一行中的第一个“foo”字串
sed 's/foo/bar/4'                # 只替换每一行中的第四个“foo”字串
sed 's/foo/bar/g'                # 将每一行中的所有“foo”都换成“bar”
sed 's/\(.*\)foo\(.*foo\)/\1bar\2/' # 替换倒数第二个“foo”
sed 's/\(.*\)foo/\1bar/'            # 替换最后一个“foo”


10.只在行中出现字串“baz”的情况下将“foo”替换成“bar”
sed '/baz/s/foo/bar/g'


11.不管是“scarlet”“ruby”还是“puce”,一律换成“red”
sed 's/scarlet/red/g;s/ruby/red/g;s/puce/red/g'  #对多数的sed都有效


12.倒置所有行,第一行成为最后一行,依次类推(模拟“tac”)。
由于某些原因,使用下面命令时HHsed v1.5会将文件中的空行删除

sed '1!G;h;$!d'
sed -n '1!G;h;$p'


13.将行中的字符逆序排列,第一个字成为最后一字,……(模拟“rev”)

sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'


14.将每两行连接成一行(类似“paste”)

sed '$!N;s/\n/ /'


15.查找“regexp”并将匹配行的上一行显示出来,但并不显示匹配行
sed -n '/regexp/{g;1!p;};h'


16.删除文件中相邻的重复行(模拟“uniq”)

sed '$!N; /^\(.*\)\n\1$/!P; D'


17.提取新闻组或 e-mail 的邮件头
sed '/^$/q'                # 删除第一行空行后的所有内容

18.提取新闻组或 e-mail 的正文部分
sed '1,/^$/d'              # 删除第一行空行之前的所有内容


19.删除配置文件中#号注释行

sed 's#\#.*##' file.conf > file.new.conf


20.删除配置文件中//号注释行

sed 's#//.*##' file.conf > file.new.conf


21.删除无内容空行

sed '/^$/d' file.conf > file.new.conf


22.删除由空格和Tab而成的空行

sed '/^[[:space:]]*$/d' file.conf > file.new.conf


23.删除行首空格

sed 's/^[ ]*//g' filename  
sed 's/^ *//g' filename  
sed 's/^[[:space:]]*//g' filename  


24.行后和行前添加新行

行后:sed 's/pattern/&\n/g' filename  
行前:sed 's/pattern/\n&/g' filename  
&代表pattern  


25.使用变量替换(使用双引号)

sed -e "s/$var1/$var2/g" filename  


26.在第一行前插入文本

sed -i '1 i\插入字符串' filename  


27.在最后一行插入

sed -i '$ a\插入字符串' filename  


28.在第一行和最后和行分别插入关键词

sed -e '1 i\<ca>' -e '$ a\</ca>' ca.crt


29.在匹配行前插入

sed -i '/pattern/ i "插入字符串"' filename  


30.在匹配行后插入
sed -i '/pattern/ a "插入字符串"' filename