echo -e "1\n2\n3\n4" | sed -n 'N;s/\n/ /;p'
sed先读入第一行到pattern space,然后执行N命令,将第二行追加进pattern space
这时pattern space里面就是1\n2,然后执行s/\n/ /,将换行符替换成空格,最后打印。
echo -e "1\n2\n3\n4" | sed -n 'n;s/\n/ /;p'
sed先读入第一行到pattern space,然后执行n命令,用第二行覆盖pattern space
这时pattern space里面就是2,然后执行s/\n/ /,因为pattern space里没有\n,所以不做任何替换,直接打印
[root@Mylinux tmp]# echo -e "1\n2" |sed -n 'n;p'
2
[root@Mylinux tmp]# echo -e "1\n2" |sed -n 'N;p'
1
2
seq 1 100|sed -n 'p;n' 奇数
seq 1 100|sed -n 'n;p' 偶数
seq 1 100|sed -n 'p;n;n;n'
seq 1 100|sed -n 'p;n;n;n;n'
如果sed的模式空间对应awk的$0
N相当于awk的{v=$0;next;$0=v"\n"$0}
n相当于awk的next
用shell来比喻的话
N是: echo 下一行内容>>模式空间
n是: echo 下一行内容>模式空间
阅读(5803) | 评论(0) | 转发(0) |