sed有2个神奇的行定址操作符:~和+
以前对倍数行一直都是用shell循环,这是个愚蠢的方法,因为每次调用sed都要读写一次文件,所以很慢。其实sed的行定址符~很强大,比如,打印所有的8的倍数行用 sed -n '0~8p'即可打印8,16,24,32...(-n 是为了禁止显示全文,否则会输出全文+8的倍数行)。
如果要打印8的倍数行的下一行呢?即1,9,17,25,33...行,很简单用1取代0,即sed -n '1~8p' .
倍数行块,是指(8,9,10); (16,17,18); (24,25,26); ...这些行,即在8的倍数行后加两行,用+定址符: sed -n '0~8, +1p' .