sed 编辑命令

sed 编辑命令对照表

把 /etc/passwd 文件赋值到当前路径下,进行操作

cp /etc/passwd ./
cat -n passwd

  

sed 删除操作

删除 passwd 文件的第一行

sed -i '1d' passwd 

删除 1-3 行

sed -i '1,3d' passwd

删除不能登录的用户,即 /sbin/nologin

sed -i '/\/sbin\/nologin/d' passwd

删除以mail开头一直到以 ftp开头的行

sed -i '/^mail/,/^ftp/d' passwd

sed 增加操作  

在/bin/bash 行后面追加一句话 This is user which can login to system

 sed -i '/\/bin\/bash/a This is user which can login to system' passwd

行前追加 在 root 和 nginx之间所有行之前追加 AAAAAAAAAAAAAAAAAAAA

 sed -i '/^root/,/^nginx/i AAAAAAAAAAAAAAAAAAAA' passwd

  

查找passwd文件中所有root的行,读取 list 的内容追加到其后面

cat list

sed -i '/root/r list' passwd

在passwd文件中将匹配到的 /bin/bash 行写入到 /tmp/user_login.txt 文件中

 sed '/\/bin\/bash/w /tmp/user_login.txt' passwd

  

sed 修改操作  

修改:

  • s/pattern/string/ 查找并替换,查找符合pattern模式的字符串,将其替换为string 适配(一、二、三、四、五)
  • s/pattern/string/g g表示表示全部匹配
  • s/pattern/string/2g 2g表示:同一行内,只替换前两个匹配到的,剩下的不替换
  • s/pattern/string/ig 加i参数表示匹配时忽略大小写,g表示匹配到的全部替换

把 /bin/bash 全部替换为/BIN/BASH

sed -i 's/\/bin\/bash/\/BIN\/BASH/g' passwd

  

只替换第一个root为ROOT

sed -i 's/root/ROOT/' passwd

只替换 一行的第二个

cat str.txt

sed -i 's/HADOOP/hadoop/2' str.txt

反向引用

把匹配到的内容原封不动的保留下来 

 cat file.txt

sed -i 's/Had..p/&s/g' file.txt

\1 也可以表示前面匹配到的内容 (比 & 更加灵活)

sed -i 's/\(had..ps\)/\1R/g' str.txt

定义变量的时候如果使用单引号 ' 不会引用变量,注意需要使用双引号"$var"

sed 命令用法总结

查询:

  • p 打印

删除:

  • d 删

增加:

  • a 匹配到的行后追加内容
  • i 匹配到的行前追加内容
  • r 将后面指定文件的内容追加到匹配到的行后面
  • w 将匹配到的行内容另存到其他文件中

修改:

  • s/pattern/string/ 查找并替换,查找符合pattern模式的字符串,将其替换为string 适配(一、二、三、四、五)
  • s/pattern/string/g g表示表示全部匹配
  • s/pattern/string/2g 2g表示:同一行内,只替换前两个匹配到的,剩下的不替换
  • s/pattern/string/ig 加i参数表示匹配时忽略大小写,g表示匹配到的全部替换

其他编辑命令:

  • = 显示行号

什么是反向引用

  • &和\1 引用模式匹配到的整个串

在file中搜寻以1开头,然后跟两个任意字符,以e结尾的字符串

sed "s/1..e/&r/g" file

  

和上面实现一样的功能,使用\1代表搜寻到的字符串

sed "s/\(1..e\)/\1r/g" file

上面两种方式实现了一样的功能,分别使用&和\1引用前面匹配到的整个字符串 两者区别在于&只能表示匹配到的完整字符串,只能引用整个字符串:而\1可以使用()对匹配到的字符串进行二次操作

例如:如果我们仅想要替换匹配到的字符串的一部分,name必须使用\1这种方式,不能使用&

  

sed中引用变量时注意事项:

  • 1、匹配模式中存在变量,则建议使用双引号
  • 2、sed中需要引入自定义变量时,如果外面使用单引号,则自定义变量也必须使用单引号

shell 三剑客之 sed 命令详解的更多相关文章

  1. shell 三剑客之 sed pattern 详解

    sed 基础介绍 语法格式 sed 处理过程 sed 选项 cat sed.txt '-p' 打印输出 ,默认输出两次,流输出一次,源文件输出一次 sed 'p' sed.txt -n  只显示处理的 ...

  2. sed命令详解 vim高级技巧 shell编程上

    第1章 sed命令详解 1.1 查找固定的某一行 1.1.1 awk命令方法 [root@znix ~]# awk '!/oldboy/' person.txt 102,zhangyao,CTO 10 ...

  3. Linux shell sed 命令详解

    详细的sed命令详解,请参考https://my.oschina.net/u/3908182/blog/1921761 sed命令常见用途 查找关键词做全局替换 查找某行的关键词做替换 查找关键字所在 ...

  4. 转 linux之sed命令详解

    http://jingyan.baidu.com/article/fec4bce2228f60f2618d8bb0.html sed  编辑裁剪文件命令 sed -i "s/\/db\/te ...

  5. Linux学习之sed命令详解

    概述 sed是stream editor的简称,也就是流编辑器.它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区 ...

  6. shell编程之awk命令详解

    shell编程之awk命令详解 a:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; out ...

  7. 【转】【Linux】sed命令详解

    sed命令详解 sed是stream editor的简称,也就是流编辑器.它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令 ...

  8. sed命令详解 (转载)

    sed是stream editor的简称,也就是流编辑器.它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内 ...

  9. 【文本处理命令】之sed命令详解

    sed行处理命令详解 一.简介 sed命令是一种在线编辑器.一个面向字符流的非交互式编辑器,也就是说sed不允许用户与它进行交互操作.sed是按行来处理文本内容的,它一次处理一行内容.处理时,把当前处 ...

随机推荐

  1. Spring cloud微服务安全实战-5-4请求转发及退出

    步骤1234已经完成 下面处理 5678这几步.zuul在转发的时候 把请求头加上 获取订单信息 加一个按钮,登陆成功后,去拿订单的信息. 展示获取到的订单信息 ts代码 ts内定义order对象 定 ...

  2. mysql 1045

    1.sudo gedit /etc/my.cnf 2.加入 skip-grant-tables 3.直接登录,输密码时回车 mysql -u root -p 4.修改密码 use mysql; upd ...

  3. RabbitMQ 入门教程(PHP版) 第四部分:路由(Routing)

    路由(Routing) 在前面的第三部分教程中,我们实现了一个简单的日志系统.可以把日志消息广播给多个接收者. 本篇教程中我们打算新增一个功能——使得它能够只订阅消息的一个字集.例如,我们只需要把严重 ...

  4. LeetCode_202. Happy Number

    202. Happy Number Easy Write an algorithm to determine if a number is "happy". A happy num ...

  5. while死循环

    while死循环放入主线程要注意,如果处理不当可能引起界面假死,如果界面假死,可以放入子线程中(如果每个循环处理时间现对于CPU很短,则建议在本次循环结束的尾部加入Sleep以释放对CPU的占用) C ...

  6. 利用eclipse导入jar包到本地仓库

    如果不也不想用mvn install xxxxxx 后面跟一大堆的东东,可以让eclipse替代完成导入,看下图 File------->Import 大功告成,可见eclipse还没有废掉,至 ...

  7. 2019年Java中高级面试题总结(8)

    116.什么时候使用访问者模式? 访问者模式用于解决在类的继承层次上增加操作,但是不直接与之关联.这种模式采用双派发的形式来增加中间层. 117.什么时候使用组合模式? 组合模式使用树结构来展示部分与 ...

  8. 洛谷 题解 P1550 【[USACO08OCT]打井Watering Hole】

    本题看似很难,实际上思路非常简单--如果你想通了. 首先有一个问题:图中有几个点?大部分的人会回答\(n\)个点.错了,有\(n+1\)个. 多出来的那个点在哪?关键在于你要理解每一个决策的意义.实际 ...

  9. TCP/IP学习笔记9--以太网之基本概念1: 分类,连接方式

    时间是变化的财富.时钟模仿它,却只有变化而无财富. -- 泰戈尔 以太网(Ethernet)一词源于Ether(以太), 是介质的意思.在爱因斯坦哥们提出量子力学之前,人们普遍认为宇宙空间充满以太,并 ...

  10. [转帖]MyCat教程【简单介绍】

    MyCat教程[简单介绍] 2019-10-15 10:27:23 波波烤鸭 阅读数 618 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. ...