sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
sed -n -e ‘/\<zhouyu\>/p’ /etc/passwd
上面的意思是在/etc/passwd文档中,显示以zhouyu开头和结尾的行
详情可以去看看这个网址
http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html
sed -e ‘/^#/d’ -e ‘/^$/d’ /etc/squid/squid.conf
上面的命令是删除/etc/squid/squid.conf文件内的#行和空行
sed -e ‘s/shrek/root/g /etc/passwd
上面是说替换shrek为root,g是表示不管有多少一行有多少个shrek都替换,如果想替换一行中最前面的那个shrek可以把g改为p
如果你只想替换含有zhouyu行中的shrek的话可以这样
sed -e ‘/zhouyu/s/shrek/root/g /etc/passwd
其中/zhouyu这个部分是正则表达式,比如这样把zhouyu换成1,10就是说在第1-10行中,只要有shrek就要替换成root,如
如果你有多个替换可以这样
sed -e ‘s/tiger/wolf/; s/after/before/’ /etc/passwd
我们也可以把脚本文件用在sed中,比如
sed -f filename /etc/passwd
这样就把文件名为filename脚本文件的内容用进去啦,不过要记住这里用的不是/bin/bash而是/bin/
其实sed也相当一个shell,也可以把它当成一个脚本文件来执行,不过要加上#!/bin/sed -f这句语句,如
./b.sh /etc/passwd > /tmp/aaa
其实在系统中有关于sed的帮助文档
info sed可以看看它的一些文档,有*号的表示可以进入看看如
下面看看awk命令
chkconfig –list | awk ‘$1==”httpd” {print $5}’
这个命令是打印出httpd的第五行
if [ `chkconfig –list | awk ‘$1==”httpd” {print $5}’` = “3:关闭” ] ; then echo ok ;fi
上面的意思自己领悟