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 ~]# ====
转载于:https://blog.51cto.com/8697196/1424794