文本名称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