Linux sed命令学习

sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法
sed命令行格式为:
         sed [-nefri] ‘command’ 输入文本        

常用选项:
        -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
        -e∶直接在指令列模式上进行 sed 的动作编辑;
        -f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
        -r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
        -i∶直接修改读取的档案内容,而不是由萤幕输出。       

常用命令:
        a   ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
        c   ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
        d   ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
         i   ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
         p  ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
         s  ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

举例:(假设我们有一文件名为ab)
     删除某行
     [root@localhost ruby] # sed '1d' ab              #删除第一行 
     [root@localhost ruby] # sed '$d' ab              #删除最后一行
     [root@localhost ruby] # sed '1,2d' ab           #删除第一行到第二行
     [root@localhost ruby] # sed '2,$d' ab           #删除第二行到最后一行

  显示某行
.    [root@localhost ruby] # sed -n '1p' ab           #显示第一行 
     [root@localhost ruby] # sed -n '$p' ab           #显示最后一行
     [root@localhost ruby] # sed -n '1,2p' ab        #显示第一行到第二行
     [root@localhost ruby] # sed -n '2,$p' ab        #显示第二行到最后一行

  使用模式进行查询
     [root@localhost ruby] # sed -n '/ruby/p' ab    #查询包括关键字ruby所在所有行
     [root@localhost ruby] # sed -n '/\$/p' ab        #查询包括关键字$所在所有行,使用反斜线\屏蔽特殊含义

  增加一行或多行字符串
     [root@localhost ruby]# cat ab
     Hello!
     ruby is me,welcome to my blog.
     end
     [root@localhost ruby] # sed '1a drink tea' ab  #第一行后增加字符串"drink tea"
     Hello!
     drink tea
     ruby is me,welcome to my blog. 
     end
     [root@localhost ruby] # sed '1,3a drink tea' ab #第一行到第三行后增加字符串"drink tea"
     Hello!
     drink tea
     ruby is me,welcome to my blog.
     drink tea
     end
     drink tea
     [root@localhost ruby] # sed '1a drink tea\nor coffee' ab   #第一行后增加多行,使用换行符\n
     Hello!
     drink tea
     or coffee
     ruby is me,welcome to my blog.
     end

  代替一行或多行
     [root@localhost ruby] # sed '1c Hi' ab                #第一行代替为Hi
     Hi
     ruby is me,welcome to my blog.
     end
     [root@localhost ruby] # sed '1,2c Hi' ab             #第一行到第二行代替为Hi
     Hi
     end

  替换一行中的某部分
  格式:sed 's/要替换的字符串/新的字符串/'   (要替换的字符串可以用正则表达式)
     [root@localhost ruby] # sed -n 's/ruby/bird/' ab   #文中替换ruby为bird
   [root@localhost ruby] # sed -n 's/ruby//g'        #删除ruby

     插入
     [root@localhost ruby] # sed -i '$a bye' ab         #在文件ab中最后一行直接输入"bye"
     [root@localhost ruby]# cat ab
     Hello!
     ruby is me,welcome to my blog.
     end
     bye

 

转自:http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html

时间: 2024-12-14 08:06:11

Linux sed命令学习的相关文章

linux sed命令详解

  sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有 改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等. sed使用参数 复制代码 代码如下: [root@www ~]# sed [-nefr] [动作] 选项与参

Linux sudo命令学习

sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等.这样不仅减少了root用户的登陆 和管理时间,同样也提高了安全性.Sudo不是对shell的一个代替,它是面向每个命令的. 概述 它的特性主要有这样几点: Sudo能够限制用户只在某台主机上运行某些命令. Sudo提供了丰富的日志,详细地记录了每个用户干了什么.它能够将日志传到中心主机或者日志服务器. Sudo使用时间戳文件来执行类似的"检票"系统.

Linux Top命令学习

也忘了第一次用Top观察Linux运行状态是什么时候了,不过最近吧Top的文档收获不少. 1. 有用的命令top-z-x z :打开/关闭彩色显示 x :高亮显示排序列 在使用top命令后,"先按z键,再按x键",这时屏幕会彩色显示输出,白色显示的列是当前排序的列:偶尔还会有一些白色显示行,这些行是当前正在运行进程.使用该参数可以帮助我们更清楚的看到排序列.例如,我想按照cpu使用排序来查看进程: 使用了top-z-x命令后是不是看得清晰了一些:) 2. 有用的命令top-1 1 :S

linux sed命令参数用法详解

利用script来处理文本文件.     语 法:sed [-hnV][-e<script>][-f<script文件>][文本文件]     补充说明:sed可依照script的指令,来处理.编辑文本文件.     参 数:       -e<script>或--expression=<script>   以选项中指定的script来处理输入的文本文件.       -f<script文件>或--file=<script文件>  以

Linux shell命令学习笔记(一)

获取服务器IP的Shell 脚本:  代码如下 复制代码 #!/bin/bash ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' |cut -d: -f2 | awk '{ print $1}' 下载整站 wget -mk http://www.111cn.net 判断文件的存在与否    代码如下 复制代码 #!/bin/bash if [ ! -f /root/log.l ]    then echo "log.l note exist&

Linux:使用sed命令替换时,如何在前面添加四个空格呢

问题描述 Linux:使用sed命令替换时,如何在前面添加四个空格呢 1C sed -i '/Alias admin/c Alias chao' httpd.conf 这个指令是将httpd.conf中包含Alias admin的行替换为了后面的Alias Chao,但是Alias Chao前面还有4个空格,发现用sed替换后,这4个空格没显示,Alias Chao在行首了,如何在Alias Chao前面添加四个空格呢?感谢各位大神能指点一下 解决方案 linux的sed命令使用

关于Linux的sed命令在行首添加空格的问题?

问题描述 关于Linux的sed命令在行首添加空格的问题? 1C ...... program A start echo a echo b echo c echo d ..... program A end program B start echo 1echo 2 program B end ......program A这一段里有几十行代码,每行代码前面有2个空格,现在需要在program A里把除了第一行以外的所有行前面再增加2个空格,不知道这个用sed怎么写,各位朋友能指点一下不,谢谢 解

Linux命令学习总结:ls

命令简介:   ls命令用来列出目标目录(缺省的话为当前目录)中所有的子目录和文件.指令英文原义:list 指令所在路径:/bin/ls 执行权限:All User   命令语法: ls [OPTION]... [FILE]... ls 选项[-alFR...]..... [文件或目录]   命令参数: 此命令参数是Red Hat Enterprise Linux Server release 5.7下ls命令参数,不同版本Linux的ls命令参数有可能不同.以实际版本为准. 参数 长参数 描叙

Linux命令学习总结之rm命令_Linux

命令简介: rm命令用来删除Linux系统中的文件或目录.通常情况下rm不会删除目录,你必须通过指定参数-r或-R来删除目录.另外rm通常可以将该文件或目录恢复(注意,rm删除文件其实只是将指向数据块的索引点(information nodes)释放,只要不被覆盖,数据其实还在硬盘上.如果想要保证文件的内容无法复原,可以使用命令shred . 另外一般还是要慎用rm -rf *这样的命令. 执行权限 :All User 指令所在路径:/bin/rm 命令语法: rm [OPTION]... FI