删除所有的空行,并在每行后面增加一个空行
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
转载于:https://www.cnblogs.com/linuxboke/p/5607782.html