sed 是流数据编辑器 stream editer,每次读取一行数据到模式空间,经处理过滤
# 打印
echo -e "AAAA\nBBBB\nCCCC\nDDDA"|sed -n '/A/p'
echo -e "AAAA\nBBBB\nCCCC\nDDDA"|sed -n '/^A/p'
echo -e "AAAA\nBBBB\nCCCC\nDDDA"|sed -n '/^A/{p}'
# 删除
echo -e "AAAA\nBBBB\nCCCC\nDDDA"|sed '/^A/{d}'
# 替换
echo -e "AAAA\nBBBB\nCCCC\nDDDA"|sed '{s/AAAA/1111/1}'
echo -e "AAAA\nBBBB\nCCCC\nDDDA"|sed -e 's/AAAA/1111/g;s/BBBB/2222/g'
# 正则
echo -e "AAAA\nBBBB\nCCCC\nDDDA"|sed -n '/^A/p'
# 模式空间
n N
p P
d D
echo -e "AAAA\nBBBB\nCCCC\nDDDA"|sed -n '/^A/{n;p}'
echo -e "AAAA\nBBBB\nCCCC\nDDDA"|sed -n '/^A/{N;p}'
echo -e "AAAA\nBBBB\nCCCC\nDDDA"|sed -n '/^A/{N;P}'
echo -e "AAAA\nBBBB\nCCCC\nDDDA"|sed '/^A/{N;d}'
echo -e "AAAA\nBBBB\nCCCC\nDDDA"|sed '/^A/{N;D}'
# 保持空间
默认文本一行行加载在模式空间中 patter space,可以使用一下命令转换模式空间和保持空间的内容
h 模式空间--保持空间,清空保持空间的内容
H 模式空间--保持空间,追加到保持空间
g 保持空间---模式空间,清空模式空间的内容
G 保持空间---模式空间,追加到模式空间
x 保持空间和模式空间的内容互换
实现tac的文件倒叙功能
方法一:
sed -n '{1!G;h;$p}'
通过上面过程发现4.1 执行h命令有些多余,因此把命令修改为 echo -e "AAAA\n\BBBB\n\CCCC\n\DDDD"|sed -n '{1!G;h;$p}'
sed '{1!G;h;$!d}'
通过上面过程发现4.1 执行h命令有些多余,因此把命令修改为 echo -e "AAAA\n\BBBB\n\CCCC\n\DDDD"|sed -n '{1!G;$h;$p}'