1、sed(stream editor):

  作为行编辑器,对文本进行编辑(以行为单位)

  默认显示输出所有文件内容

  注意:sed编辑文件,却不改变原文件

2、sed的工作原理:

  指定一个文本文件,依次读取文本文件每行的内容,读取到模式空间中(PATTERN SPACE),在模式空间中进行文本匹配,对匹配后的内容进行修改(替换、删除、打印、修改、保存等等)

3、用法:

  sed [参数] “sed自己独立的用法格式语句” [文本文件]

4、常见参数

  -r 指定扩展的正则表达式

  -n 拒绝默认显示

  -e script 后面接脚本文件

  -f 指定脚本文件

  -l 指定文本的换行长度

  -i 直接修改文件内容***危险

5、地址定界

  a) 直接匹配数值  sed -n ‘5p’ /etc/passwd

  b) 指定步长n~m  n为起始数字,m为步长 sed -n ‘1~3p’ /etc/passwd

  c) $指定行尾  sed -n ’10,$p’ /etc/passwd

  d) /正则表达式/  /正则/,/正则/   sed -n ‘/t\{1,\}/,$p’ /etc/passwd

  e) 0,addr    sed -n ‘0,/t\{1,\}/,$p’ /etc/passwd  匹配0行到正则行

  f) addr,+N 匹配addr行到,addr后N行 sed -n ‘/root/,+2p’ /etc/passwd

6、常见命令

  p  print 打印(默认在题目上显示出来),建议和 -n 一起使用

  c  替换行 sed “/被替换的值/c \替换的值” 文件

  d  删除  sed “/被删除的值/d 文件  sed “1,3d” 文件 删除1-3行

  n/N  读取/添加  模式匹配到的行的下一行内容,在对其进行操作

  w   保存文件内容到一个新的文件

  s   文本内容替换,默认替换模式空间匹配的第一项,其他不替换

    格式:s/pattern/字符串/  把pattern匹配 的内容替换为字符串

    例子  sed “s/r/R/” /etc/etc/passwd  只替换了每行第一个r

    g 全部  sed “s/r/R/g” /etc/passwd  把文件中的所有r换为R

    \1 \2 \3… 和正则表达式的分组相同,实现反向应用;指定某一个匹配项进行修改匹配

    &  调用前面匹配的内容  sed “s/test/&er/g” /etc/passwd 把test开头的所有后面加er后缀

练习:

1、删除/boot/grub/grub.conf文件中所有空白开头的行行首的空白字符

sed 's/^[[:space:]]\+//' /boot/grub/grub.conf

2、删除/etc/fstab文件中所有以#开头,后面最少跟着一个空白字符的行的行首的#和空白字符

sed 's/^#[[:space:]]\+//' /etc/fstab

3、给定一个目录,取出其目录名

dirname /var/log/message   #dirname命令提取路径的目录名部分
#或者
echo '/var/log/message' | sed 's/[^/]\+$//'

4、给定一个目录,取出其目录名

basename /var/log/message   #basename命令提取路径的文件名部分
#或者
echo '/var/log/message' | sed 's#^/.*/)##'

Linux--shell三剑客<sed>--07的更多相关文章

  1. Linux shell利用sed如何批量更改文件名详解[转载]

     需求背景: 目录A用来存放自动化的包生成的apk文件,现在开发修改了包名的 命名规则:环境名称(pro|uat)-release-日期-v版本号.apk 原来的是思路是通过正则表达式匹配新的包名,但 ...

  2. linux shell 用sed命令在文本的行尾或行首添加字符

    转自 http://www.cnblogs.com/aaronwxb/archive/2011/08/19/2145364.html 昨天写一个脚本花了一天的2/3的时间,而且大部分时间都耗在了sed ...

  3. Linux Shell编程 sed命令

    概述 sed 是一种几乎可以应用在所有 UNIX 平台(包括 Linux)上的轻量级流编辑器,体积小.所以,它可以对从如管道这样的标准输入中接收的数据进行编辑. sed 主要是用来将数据进行选取.替换 ...

  4. Linux shell之sed

    sed编辑器逐行处理输入,然后把结果发送到屏幕. -i选项:直接作用源文件,源文件将被修改. sed命令和选项: a\ 在当前行后添加一行或多行 c\ 用新文本替换当前行中的文本 d 删除行 i\ 在 ...

  5. Linux shell用sed批量更改文件名的相关内容

    示例 去除特定字符 目标:将指定目录下文件名中sprint替换为dev 方法: [root@Skip-ftp test]# for i in `ls` > do > name=`echo ...

  6. Linux文本三剑客-sed

    sed工作原理: sed: Stream Editor.流编辑器 --- 属于行编辑工具 sed和vim一样都是文本编辑工具. 行编辑工具:一行一行处理文件内容 全屏编辑工具:一次性将文件内容加载到内 ...

  7. 005 Linux 命令三剑客之-sed

    grep:数据查找定位 awk:数据切片,数据格式化,功能最复杂 sed:数据修改 01 Linux 命令三剑客? 三剑客各有所长,和锅锅一一搞起就是了! sed:擅长数据修改. grep:擅长数据查 ...

  8. linux shell 修改文本 sed

    linux shell 修改文本echo [root@DSI tmp]# echo 'yhqt1 test1' > test1.txt [root@DSI tmp]# cat test1.txt ...

  9. Linux shell multifile content replace with sed

    #!/bin/bash # Linux shell multifile content replace with sed # 声明: # 本源代码主要是利用两份(中.英文)具有相同键值对的json数据 ...

随机推荐

  1. luogu P1028 数的计算 x

    P1028 数的计算 题目描述 我们要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理: 1.不作任何处理; 2.在它 ...

  2. codeforces 682C

    鸽了两天,还是我太蒟了,mayan游戏调不出来,难题又不会,只有刷水DFS才能勉强维持一下生计这样子,我还是要提高姿势水平啊! 题目描述: 给定一棵树,每条边有边权,每个点有点权,如果某个点到其子节点 ...

  3. 【RabbitMQ】Centos7安装RabbitMQ

    介绍 RabbitMQ  是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务 ...

  4. 在阿里云虚拟主机上部署Laravel

    拿laravel5.1来说: 在根目录下创建一个local文件夹,把网站根目录下除了public文件夹以外所有文件及文件夹剪切到local文件夹中 然后把public文件夹下的所有文件剪切到网站根目录 ...

  5. os.environ.get()的用法

    os.environ.get()是python中os模块获取环境变量的一个方法 import os JS_ADDRESS = os.environ.get("PALM_JS_ADDRESS& ...

  6. 【zabbix】zabbix 高可用架构的实现

    https://www.jianshu.com/p/249d47b089b4?utm_campaign=maleskine&utm_content=note&utm_medium=se ...

  7. C# Oledb 连接Access数据库字符串

    string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbFile + ";Persist ...

  8. 设计模式-Runoob:设计模式简介

    ylbtech-设计模式-Runoob:设计模式简介 1.返回顶部 1. 设计模式简介 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用.设计模式是 ...

  9. 包管理器 - peer dependency 的安装

    npm 和 yarn 安装依赖(包)时不会自动安装 peer dependence(虽然很旧的 npm 是会自动安装的,但几乎没人用那么旧的了),而是给出如下警告: $ npm install --s ...

  10. codeforces#1215E. Marbles(状压DP)

    题目大意:给出一个由N个整数组成的序列,通过每次交换相邻的两个数,使这个序列的每个相同的数都相邻.求最小的交换次数. 比如给出序列:1 2 3 2 1 ,那么最终序列应该是 1 1 2 2 3 ,最小 ...