删除所有的空行,并在每行后面增加一个空行

sed '/^$/d;G' /etc/fstab

 

将每一行前导的“空白字符”(空格,制表符)删除

sed 's/^[\t ]*//' file

 

将文本中的 aaa bbb ccc 都替换为ttt

sed 's@aaa\|bbb\|ccc@ttt@g' file

 

将yes替换为no,并且只在行中未出现字符hello的情况下替换

sed '/hello/ !s/yes/no/g' file

 

 

删除匹配到的行的下一行:

 

sed '/UUID/{n;d}' /etc/fstab

 

删除匹配到的行和下一行:

 

sed '/UUID/{N;d}' /etc/fstab

 

解释一下n如果UUID被匹配到,则移动到匹配行的下一行,并删除这一行

 

n  读取下一个输入行,用下一个命令处理新的行

 

解释一下N如果UUID被匹配到,则匹配行和下一行都会被读取到sed的缓存空间,接着删除这两行

 

删除文件每行中的第一个字符:

 

sed -n 's/^.//p' /etc/fstab

 

删除文件每行的最后一个字符:

 

sed -n 's/.$//p' /etc/fstab

 

删除文件每行的第二个字符:

 

sed -nr 's/(.)(.)(.*)/\1\3/p' /etc/fstab

 

-r表示使用扩展正则表达式

 

假设有一个文件格式如下

使用 sed 'N;s/\n/\t/' file命令转换成如下格式

原理解释:

  N:读取下一行并追加到模式空间中的行后面,当sed读入第一行内容时,由N将下一行的内容追加到模式空间中,此时模式空间

中的内容为"aaa\nbbb",再由编写的匹配规则进行替换,将"\n"替换为了"\t",再执行默认的"p"操作,输出到标准输出

 

显示奇数行

sed -n '1~2p' file