sed是一种支持正则表达式的非交互式流编辑器(stream editor)
脚本中修改文本或者文本替换的最佳工具
sed的语法命令格式
sed  [选项]   sed编辑命令   输入文件
shell 命令  |  sed  [选项]   sed编辑命令 
sed  [选项]   -f  sed脚本文件   输入文件

sed的常用选项
-n:只显示匹配处理的行(否则会输出所有)
-e:执行多个编辑命令时(一般用;代替)
-i:直接在文件中进行修改,而不是输出到屏幕
-r:支持扩展正则表达式
-f:从脚本文件中读取内容并执行(文件中的编辑命令每行一个,不用;隔开)
===
sed的常用编辑命令
p:打印匹配行 print
d:删除指定行 delete
a:在匹配行后面追加 append
i:在匹配行前面插入 insert
c:整行替换
r:将文件的内容读入  read
w:将文本写入文件  write
s:字符串替换(匹配正则表达式)substitution
===
[root@teacher sed]# sed -n  '10p' passwd   输出第10行
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
[root@teacher sed]# sed -n '10,+2p' passwd   输出第10行和后面2行
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
[root@teacher sed]# sed -n '10,15p' passwd   输出第10行到15行的内容
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
[root@teacher sed]# sed -n  '10p;18p' passwd  输出第10行和第18行
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
[root@teacher sed]# 
===
[root@teacher sed]# lftp 10.0.2.253
lftp 10.0.2.253:~> cd note/zhoumo-4ban/song/
lftp 10.0.2.253:/note/zhoumo-4ban/song> get list 
415 bytes transferred
lftp 10.0.2.253:/note/zhoumo-4ban/song> quit
[root@teacher sed]# ls
list  passwd
[root@teacher sed]# cat list 
1 昆
2 林昀
3 世纪
===
[root@teacher sed]# cat list |sed -n '4,30!p'   不显示第4到30行的内容 !非的意思
1 昆
2 林昀
3 世纪
31 彬彬
32 擎
33 老师
34 皓
35 姐
36 张

[root@teacher sed]# 
===
不想显示第10到20行和第5到第8行的内容
[root@teacher sed]# cat list |sed -n '10,20!p'|sed -n '5,8!p'
===
[root@teacher sed]# cat list |sed -n '/王/p'
6 王琛晖
29 王龙
[root@teacher sed]#
查找出姓王和姓李的同学的名字
[root@teacher sed]# cat list |sed -n '/王/p;/李/p'
6 晖
14 畅骅
29 龙
[root@teacher sed]# cat list |sed -n '/王/p;/李/p;/刘/p'
6 琛晖
8 利
9 甜
10 遵庆
14 畅骅
25 超
29 龙
[root@teacher sed]#
====
[root@teacher sed]# cp /etc/ssh/sshd_config ./
[root@teacher sed]# ls
list  passwd  sshd_config
[root@teacher sed]
[root@teacher sed]# cat sshd_config |sed -nr '/^#|^$/!p'  不显示以#号开头的行和空行  | 是或符号
Protocol 2
SyslogFacility AUTHPRIV
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
UsePAM yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
X11Forwarding yes
UseDNS no
Subsystem	sftp	/usr/libexec/openssh/sftp-server
[root@teacher sed]# 
==
^  代表以什么开头
$ 代表以什么结尾
\ 转义符号
==
[root@teacher sed]# df -Th  查看linux磁盘分区的使用情况(相当于windows里打开计算机查看c、d、e盘的使用情况)
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda3     ext4    184G   83G   92G  48% /
tmpfs        tmpfs    1.9G  572K  1.9G   1% /dev/shm
/dev/sda1     ext4    485M   37M  423M   9% /boot
/dev/sda7     ext4    104G   46G   53G  47% /var/ftp/software
/var/ftp/software/iso/rhel6.4-x86_64.iso
           iso9660    3.5G  3.5G     0 100% /var/ftp/rhel6.4
/var/ftp/software/iso/rhel6.4-x86_64.iso
           iso9660    3.5G  3.5G     0 100% /local-yum
[root@teacher sed]# df -Th|sed -nr '/\/$/p' 以/结尾的行显示
/dev/sda3     ext4    184G   83G   92G  48% /
[root@teacher sed]# df -Th|sed -nr '/\/$/p;/boot$/p'以/或者boot结尾的行显示
/dev/sda3     ext4    184G   83G   92G  48% /
/dev/sda1     ext4    485M   37M  423M   9% /boot
[root@teacher sed]# 
编写一个脚本disk_use.sh,实现显示/分区用了多少,boot分区使用了多少空间
显示效果如下:
             / partition  used  **
             boot partition  used  **
===
如果那个分区使用比例超过80%显示 sir,your ** partition is full ,please remove something on it
如果没有超过,显示 sir,your disk partition is ok
===
[root@teacher sed]# cat disk_use.sh 
#!/bin/bash
#description:   display disk partition usage

root_part=`df -Th|sed -nr '/\/$/p'|awk '{print $6}'|awk -F% '{print $1}'`
boot_part=`df -Th|sed -nr '/boot$/p'|awk '{print $6}'|awk -F% '{print $1}'`


echo   /  partition used $root_part%
echo   /boot  partition used $boot_part%

[ $root_part -gt 80 ]&&echo your root partition is full ,please remove something on it||echo sir,your root partition is ok
[ $boot_part -gt 80 ]&&echo your boot partition is full ,please remove something on it||echo sir,your boot partition is ok

if [ $root_part -gt 80  ];then
    echo 	your root partition is full ,please remove something on it
else
    echo 	sir,your root partition is ok
fi

if [ $boot_part -gt 80  ];then
   echo	your boot partition is full ,please remove something on it
else
   echo 	sir,your boot partition is ok
fi

====



$? 代表上一条命令的执行结果的返回值  如果为0 代表上一条命令执行成功,非0代表不成功
[root@teacher ~]# echo $?    
0
[root@teacher ~]# jfdkjfkdfjk
bash: jfdkjfkdfjk: command not found
[root@teacher ~]# echo $?
127
[root@teacher ~]#
====