sed的执行过程

sed一次处理一行内容,不改变文件内容 记住sed在处理完每一行数据之后默认会打印出来. 读入哪一行会先进行正则匹配,如果匹配就让sed命令进行处理,否则直接输出到屏幕.
sed使用方式——命令行格式
sed [-e,-n] '行定位(正则)+sed命令(操作)' file(s)
sed使用方式——命令行格式 参数 -e
-e调用两个sed命令

sed使用方式——命令行格式参数 -n
表示抑制sed默认的打印操作
如果没有加-n,

那如果加上-n参数呢:
$sed -n '/root/p' passwd
root:x:0:0:root:/root:/bin/bash
只输出了一行,有些人会以为sed命令输出了两次,其实不是输出了两次,而是sed命令本身会输出所有读入的行,然后p命令又会打印匹配的行,而-n可以抑制sed默认的打印行为.
sed使用方式——命令行格式 sed命令 p
打印所有匹配的行

sed使用方式——命令行格式 定位一行 x或/pattern/
打印第十行
$ nl passwd |sed -n '10p'
10 news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
打印有root的行
$sed -n '/root/p' passwd
root:x:0:0:root:/root:/bin/bash
sed使用方式——命令行格式 定位几行 x,y或/pattern/,/pattern/或/pattern/,x
打印10,11,12行
$sed -n '10,12p' passwd
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
打印有news的行和有proxy的行之间的行
$ sed -n '/news/,/proxy/p' passwd
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
打印有news的行到第14行之间的行
$ sed -n '/news/,14p' passwd
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
sed使用方式——命令行格式 行定位 间隔几行 first~step

sed使用方式——命令行格式 行定位 取反!
不打印第一行
$ sed -n '1!p' passwd
不打印1,2行,范围取反
sed -n '1,2!p' passwd
sed使用方式——脚本格式
sed -f scriptfile file(s)




