首页 > 代码库 > sed-awk的简单操作

sed-awk的简单操作

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

上面的意思自己领悟


本文出自 “爱周瑜” 博客,请务必保留此出处http://izhouyu.blog.51cto.com/10318932/1910295

sed-awk的简单操作