sed N的用法

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 下一行内容>模式空间

posted @ 2015-07-06 08:18  arun_yh  阅读(3855)  评论(0编辑  收藏  举报