Linux中sed的用法实践

参考资料:https://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html

http://www.fn139.com/list-2.html
sed命令行格式为:
sed [-nefri] 'command' 输入文本/文件
常用选项:
    -n:取消默认的输出,使用安静(silent)模式。在一般的sed用法中,
        所有来自STDIN的资料一般都会被列出到屏幕上。但如果加上-n参数后,则只有经过sed特殊处理的那一行(或者动作)才会被列出来
    -e:进行多项编辑,及对输入行应用多条sed命令时使用。直接在指令模式上进行sed的动作编辑
    -f:指定sed脚本的文件名。直接将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
定址
    定址用于决定对哪些行进行编辑。地址的形式可以是数字、正则表达式、或二者的结合。如果没有指定地址,sed将处理输入文件的所有行。
    地址是一个数字,则表示行号;是"$"符号,则表示最后一行。例如:
    sed -n '3p' datafile  # 只打印第三行
    
    只显示指定行范围的文件内容,例如:
    # 只查看文件的第100行到第200行
    sed -n '100,200p' /data/mysql/mysql_3306/logs/slow.log

地址是逗号分隔的,那么需要处理的地址是这两行之间的范围(包括这两行在内)。范围可以用数字、正则表达式、或者二者的组合表示。例如:
    
    sed -i '2,5d' passwd
    # 删除第2行到第5行
    
    sed -i '/memcached/,/mysql/d' passwd
    # 删除包含"memcached"和"mysql"的行之间的行
    
    sed -i '/sshd/,10d' passwd
    # 删除包含"/sshd"到第10行的内容
    
    举例:
    [root@my3-224 ~]# sed -i '1d' passwd     # 删除第一行
    [root@my3-224 ~]# sed -i '$d' passwd     # 删除最后一行
    [root@my3-224 ~]# sed -i '1,2d' passwd     # 删除第1行到第2行
    [root@my3-224 ~]# sed -i '2,$d' passwd     # 删除第2行到最后一行
    
    显示某行:
    [root@my3-224 ~]# sed -n '1p' passwd    # 显示第一行
    [root@my3-224 ~]# sed -n '$p' passwd     # 显示最后一行
    [root@my3-224 ~]# sed -n '1,2p' passwd     # 显示第一行到第二行
    [root@my3-224 ~]# sed -n '20,$p' passwd # 显示第20行到最后一行
    
    使用模式匹配查询
    [root@my3-224 ~]# sed -n '/mysq/p' passwd    # 查询包含关键字mysq所有行
    [root@my3-224 ~]# sed -n '/\$/p' passwd     # 查询包含$所在的所有行,使用反斜线\屏蔽特殊含义

增加一行或多行字符串
    [root@my3-224 ~]# cat ab
    Hello!
     ruby is me,welcome to my blog.
    end
    [root@my3-224 ~]#
    [root@my3-224 ~]# sed -i '1a drink tea' ab  # 第一行后增加字符串"drink tea"
    [root@my3-224 ~]# cat ab
    Hello!
    drink tea
        ruby is me,welcome to my blog.
    end
    [root@my3-224 ~]#
    
    [root@my3-224 ~]# cat ab
    Hello!
     ruby is me,welcome to my blog.
    end
    [root@my3-224 ~]# sed -i '1,3a drink tea' ab # 第一行到第三行后增加字符串"drink tea"
    [root@my3-224 ~]# cat ab
    Hello!
    drink tea
        ruby is me,welcome to my blog.
    drink tea
    end
    drink tea
    [root@my3-224 ~]#
    
    [root@my3-224 ~]# sed '1a drink tea\nor coffee' ab # 第一行后增加多行,使用换行 符\n
    Hello!
    drink tea
    or coffee
    ruby is me,welcome to my blog.
    end
    [root@my3-224 ~]# sed -i '1a drink tea\nor coffee' ab # 第一行后增加多行,使用换行符\n
    [root@my3-224 ~]# cat ab
    Hello!
    drink tea
    or coffee
    ruby is me,welcome to my blog.
    end
    [root@my3-224 ~]#
    
    替换一行中的某部分
    格式:sed 's/要替换的字符串/新的字符串/g' (要替换的字符串可以用正则表达式)
    [root@my3-224 ~]# sed -n 's/drin/BBB/g' ab   # 替换drin为BBB
    [root@my3-224 ~]# sed -i 's/drin/BBB/g' ab   # 替换drin为BBB
    [root@my3-224 ~]# cat ab
    Hello!
    BBBk tea
    or coffee
    ruby is me,welcome to my blog.
    end
    [root@my3-224 ~]#

Linux中sed的用法实践的更多相关文章

  1. Linux中Sed的用法

    Linux中Sed的用法 sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为: ...

  2. linux中sed的用法【转】

    sed命令行格式为:         sed [-nefri]  ‘command’  输入文本/文件 常用选项:        -n∶取消默认的输出,使用安静(silent)模式.在一般 sed 的 ...

  3. [转载]linux中sed的用法

    转自:http://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html sed命令行格式为:         sed [-nefri]  ‘ ...

  4. Linux中find常见用法

    Linux中find常见用法示例 ·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \; find命令的参数 ...

  5. [转]Linux中find常见用法示例

    Linux中find常见用法示例[转]·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;find命令的参 ...

  6. (转)linux 中特殊符号用法详解

    linux 中特殊符号用法详解 原文:https://www.cnblogs.com/lidabo/p/4323979.html # 井号 (comments)#管理员  $普通用户 脚本中 #!/b ...

  7. linux中sed命令(全面解析)

    目录 一:linux中sed命令介绍 1.sed作用 2.sed命令格式 3.参数 4.sed的编辑模式 5.sed参数解析用法 二:sed 参数 -f 案例实战解析 1.前介 2.引入简介 3.方法 ...

  8. linux中make的用法

    一.linux中make的用法 目的:       基本掌握了make 的用法,能在Linux系统上编程.环境:       Linux系统准备:       准备三个文件:file1.c, file ...

  9. Linux中“!"的神奇用法

    前言 实际上,不起眼的“!”在linux中有着很多让你惊叹的妙用.本文就来细数那些“!”的神奇用法. 执行上一条命令 例如,在执行完上面一条命令后,可以使用下面的方式再次执行上一条命令: $ wher ...

随机推荐

  1. spring的作用是减低耦合,从编译器降低,例如不直接通过new方式 而是通过工厂方式获取对象

    spring的作用是减低耦合,从编译器降低,例如不直接通过new方式 而是通过工厂方式获取对象

  2. Nginx CGI反向代理对照

    陶辉104 CGI是什么? CGI全称是“通用网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具

  3. JavaScript——JS屏蔽F12和右键

    键盘表 来源:http://www.phpweblog.net/kiyone/archive/2007/04/19/1138.html 通过onkeydowm监听键盘按下事件,并修改键盘码 //禁止F ...

  4. Java将Excel中科学计数法解析成数字

    需要注意的是一般的科学表达式是1.8E12 1.8E-12 而在Excel中的科学表达式是1.8E+12 1.8E-12 我写的科学计数法的正则表达式是(-?\d+\.?\d*)[Ee]{1}[\+- ...

  5. 使用 dmidecode 查看Linux服务器信息

    使用 dmidecode 查看Linux服务器信息 来源  http://www.laozuo.org/6682.html 对于大部分普通服务器用户来说,我们选择VPS.服务器产品的时候比较关心的是产 ...

  6. [APIO2012]守卫

    近日状态并不是很好, 很不稳, 思路也不是很清晰 希望自己能走出来 题意:有序列1~n 现给出两种区间 区间0:序号在[x, y]的节点不能有忍者 区间1:序号在[x, y]的节点区间里至少有一个忍者 ...

  7. 脚本监控web服务器,工作不正常发邮件提醒

    背景介绍公司有多个web网站,没有配置监控服务,每天都需要定时检查服务器是否工作正常.低效耗时. 代码片段 #!/bin/bash # Author Jerry.huang (Email:Jerry. ...

  8. 【题解】 AtCoder ARC 076 F - Exhausted? (霍尔定理+线段树)

    题面 题目大意: 给你\(m\)张椅子,排成一行,告诉你\(n\)个人,每个人可以坐的座位为\([1,l]\bigcup[r,m]\),为了让所有人坐下,问至少还要加多少张椅子. Solution: ...

  9. Hdoj 2501.Tiling_easy version 题解

    Problem Description 有一个大小是 2 x n 的网格,现在需要用2种规格的骨牌铺满,骨牌规格分别是 2 x 1 和 2 x 2,请计算一共有多少种铺设的方法. Input 输入的第 ...

  10. 【agc013d】Piling Up(动态规划)

    [agc013d]Piling Up(动态规划) 题面 atcoder 洛谷 有\(n\)个球,颜色为黑白中的一种,初始时颜色任意. 进行\(m\)次操作,每次操作都是先拿出一个求,再放进黑白各一个, ...