内容:

1.sed命令介绍

2.语法格式,常用功能

查询  增加  替换 批量修改文件名

第1章 sed是什么

字符流编辑器 Stream Editor

第2章 sed功能与版本

处理出文本文件,日志,配置文件等

增加,删除,修改,查询

sed  --version

sed  -i 修改文件内容

第3章 语法格式

3.1 语法格式

sed [选项] [sed指令] [输入文件]

sed -i.bak 's#oldboy#oldgril#g' oldbboy.txt

先备份在修改

-i   ---sed的参数

修改

-s    --sed指令

g   ---小尾巴/修饰

sed  找谁  干啥

找谁----条件(查找)

干啥----命令  替换 删除  增加

3.2 命令执行过程

sed 特性:默认输出

-n 取消默认输出

模式空间:内存中专门为sed腾出的一块地

第4章 常用功能

4.1 查询:

4.1.1 #单行 - 行号

显示第几行

[root@oldboyedu43-lnb oldboy]# sed -n '3p' person.txt

103,Alex,COO

显示包含oldboy的行

#包含oldboy的行

[root@oldboyedu43-lnb oldboy]# sed -n '/oldboy/p' person.txt

101,oldboy,CEO

//   //内支持正则表达式         过滤内容

4.1.2 多行 连续

找出第1到3行

sed -n ‘1,3p  person.ttx’

#显示包含oldboy的行到包含yy的行

[root@oldboy-gao oldboy]# sed -n '/oldboy/,/yy/p' person.txt

101,oldboy,CEO

102,zhangyao,CTO

103,Alex,COO

104,yy,CFO

显示文件的第1,4,5行

[root@oldboy-gao oldboy]# sed -n '1p;4p;5p' person.txt

101,oldboy,CEO

104,yy,CFO

105,feixue,CIO

同一行多条命令用;(分号)分隔

小结:

1. 行号

2. 正则表达式 ‘//p’

3. 范围 ‘/oldboy/,/yy/’

4.2 增加

4.2.1 多行增加:  \n 换行符  (三种方法)

1. 文件的最后一行增加两行
106,wuxingge,UFO
107,lee,XO

1)echo

echo -e "106,wuxingge,UFO\n107,lee,XO" >>person.txt

2)cat

[root@oldboy-gao oldboy]# cat >>person.txt <<ha

106,wuxingge,UFO

107,lee,XO

ha

3) sed    行号a           在文件中某一行追加内容

[root@oldboy-gao oldboy]# sed  '$a106,wuxingge,UFO\n107,lee,XO' person.txt   最后一行

a ===  append     追加    --下一行

i ==== insert       插入  -----上一行

错误

[root@oldboy-gao oldboy]# sed '2a gyf is a student\nhe's a good boy' person.txt

> ^C

三个单引号乱了

解决:单引号换双引号

删除    d      一行

4.2.2 不显示文件中空行

grep -v '^$' person.txt

sed '/^$/d' person.txt

awk '!/^$/' person.txt

sed -n '/^$/!p' person.txt

!(叹号) sed  awk  find 中表示取反

4.3 替换

4.3.1 不加g  将每一行中第一处匹配的字符串进行替换

[root@oldboy-gao oldboy]# cat person.txt

101,oldboy,CEO

[root@oldboy-gao oldboy]# sed 's#[1-9]#AAA#g' person.txt|egrep -v '^$'

AAA0AAA,oldboy,CEO

加g --global  每一行进行全部替换 ---> sed指令s的替换标志之一(全局替换)

[root@oldboy-gao oldboy]# sed 's#[1-9]#AAA#' person.txt|egrep -v '^$'

AAA01,oldboy,CEO

4.3.2 sed 先备份在修改文件内容

sed  -i.bak ‘s#[1-9]#AAA#g’ person.txt

先把文件备份为person.txt.bak

然后再修改文件内容

4.3.3 变量替换     双引号识别     ###  把###之间定义变量

[root@oldboyedu43-lnb oldboy]# x=oldboy                       定义x   y 两个变量

[root@oldboyedu43-lnb oldboy]# y=oldgirl

[root@oldboyedu43-lnb oldboy]# sed "s#$x#$y#g" person.txt         $x   $y    应用变量

101,oldgirl,CEO

102,zhangyao,CTO

2. 后项引用

1)把匹配到的内容按规定格式形式

[root@oldboy-gao oldboy]# echo '123456'|sed -r 's#(.*)#<\1>#g'

<123456>

2)引用前面匹配到的内容

[root@oldboy-gao oldboy]# echo '123456'|sed -r 's#(.*)#<\1>#g'

<123456>

新方法 :&表示前面正则匹配到的内容  

[root@oldboy-gao oldboy]# echo '123456'|sed 's#.*#<&>#g'

<123456>

前面每个数字都加上< >号

[root@oldboy-gao oldboy]# echo '123456'|sed 's#.#<&>#g'

<1><2><3><4><5><6>

4.4 新案列:批量修改文件名    命令的拼接

把.jpg修改为.avi

-rw-r--r--. 1 root root 0 Jan 10 00:24 oldboy01.jpg

-rw-r--r--. 1 root root 0 Jan 10 00:24 oldboy02.jpg

-rw-r--r--. 1 root root 0 Jan 10 00:24 oldboy03.jpg

-rw-r--r--. 1 root root 0 Jan 10 00:24 oldboy04.jpg

-rw-r--r--. 1 root root 0 Jan 10 00:24 oldboy05.jpg

4.4.1 方法一:命令拼接

[root@oldboy-gao oldboy]# ls *.jpg|sed -r 's#(.*)jpg#mv & \1avi#g'

mv oldboy01.jpg oldboy01.avi

mv oldboy02.jpg oldboy02.avi

|bash   把前面的输出交给 bash(命令解释器) 执行

[root@oldboy-gao oldboy]# ls *.jpg|sed -r 's#(.*)jpg#mv & \1avi#g'|bash

[root@oldboy-gao oldboy]# ls *.avi

oldboy01.avi  oldboy03.avi  oldboy05.avi  oldboy07.avi  oldboy09.avi

oldboy02.avi  oldboy04.avi  oldboy06.avi  oldboy08.avi  oldboy10.avi

小结:

1. 命令拼接--解决不会循环

2. 先在屏幕上拼接出目标命令--最终交给bash执行

4.4.2 方法二:rename

rename  from                 to                file

你要替换的内容       替换成什么        替换哪些文件

jpg                  avi                *.jpg

[root@oldboy-gao oldboy]# rename jpg avi *.jpg

[root@oldboy-gao oldboy]# ls *.avi

oldboy01.avi  oldboy03.avi  oldboy05.avi  oldboy07.avi  oldboy09.avi

oldboy02.avi  oldboy04.avi  oldboy06.avi  oldboy08.avi  oldboy10.avi

sed用法小结:

1. 排除                          !

2. 特殊符号===获取行号                        =

3. 一条sed语句执行多条命令                ;

4.5 sed命令常见的坑  -ri   和  -ir

4.5.1 -r与-i同时使用

***-r参数必须在前面

-ri

正常

-ir

先把文件备份为xxxr

然后再替换文件中的内容

4.5.2 -i禁止与-n一起使用

会把原文件内容清空

转载于:https://blog.51cto.com/13517084/2069074

1.10-linux三剑客之sed命令详解及用法相关推荐

  1. linux三剑客之awk命令详解

    linux三剑客之awk命令详解 awk 是一个处理文本的编程语言工具,能用简短的程序处理标准输入或文件.数据排序.计算以及生成报表等等.awk工具主要用于格式化输出,可以用类似于处理表格的方式处理文 ...

  2. 【Linux篇】sed命令详解

    文章目录 sed命令详解 一.基本语法 二.实操案例 内部命令选项说明 命令选项说明 标志 三.sed小技巧 sed命令详解 sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时 ...

  3. Linux|文本处理三剑客之sed命令详解

    文章目录 sed命令 sed命令处理文本的过程: sed的常用选项: sed的常用编辑命令: sed的p命令示例: 引用shell变量:双引号 .花括号括变量名 &的用法 标签的用法(分组思想 ...

  4. linux shell sed i,Linux Shell学习-sed命令详解

    (1).sed介绍 Sed是流编辑器,stream editor,它是一个将一些列编辑命令作用于一批文本文件的理想工具. (2).sed工作原理 Sed是一个非交互式文本编辑器,它可以对文本文件和标准 ...

  5. Shell三剑客之sed命令详解

    目录 一.sed命令的常见用法 选项 操作 二.用法示例 2.1.输出符合条件的文本(p表示正常输出) 2.2.sed结合正则表达式输出指定行 2.3.删除符合条件的文本 2.4.插入符合条件的行 三 ...

  6. Linux三剑客之grep命令详解及相关实例

    grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用 ...

  7. 文本处理三剑客之sed命令详解

    sed是流编辑器,可以对文本进行逐行判断并编辑的一种非常强大的文本处理工具 工作原理: 1.读取一行到模式空间(pattern space) 2.从指定的操作指令集中取出第一个指令,判断是否匹配所要的 ...

  8. linux sed.写文件,Linux文件处理sed命令-linux sed命令详解-linux sed写入文件-嗨客网

    Linux文件处理sed命令详解教程 Linux sed命令使用 Linux sed 命令处理时,把当前处理的行存储在临时缓冲区中,称为 "模式空间"( oattern space ...

  9. Linux实战教学笔记12:linux三剑客之sed命令精讲

    第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...

最新文章

  1. 如何在Java中生成特定范围内的随机整数?
  2. 给php权限,PHP实现权限管理功能的方法
  3. 【转】你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问
  4. 多核编程中伪共享问题(false sharing)
  5. 内控堡垒机:内网安全威胁的“终结者”
  6. 10分钟接入腾讯验证码验证平台
  7. window平台编译draco库
  8. 什么是源路由(source routing)?
  9. 桌面计算机打开无响应,在win7系统中桌面无响应的几种解决方法
  10. Scikit-learn的六大功能
  11. 为什么amd显卡便宜却买的人少_为什么不推荐人选择AMD?
  12. 论文精读《Immersive Collaborative Analysis of Network Connectivity: CAVE-style or Head-Mounted Display?》
  13. Spring Boot集成支付宝电脑网站支付功能
  14. vs2015 x86的Qt项目迁移到vs2017 x64平台
  15. 宇视阿宇摄像机夜间效果好吗?画面可以看清楚吗?
  16. JETSON TX2烧写系统
  17. 水浒猛将java版_水浒传猛将等级层次划分
  18. ccf2016年4月10日认证考试 俄罗斯方块问题思路
  19. 一般人很难想象的一个营销方案,洗车店只用一招就让生意爆满
  20. 我国计算机的最新进展,我国计算机最新进展

热门文章

  1. math.atan2_带有Python示例的math.atan2()方法
  2. 实验6 数据查询--高级查询
  3. linux fdisk 磁盘空间使用率,linux查看磁盘剩余空间以及cpu使用情况
  4. 数据可视化【七】 更新模式
  5. Hadoop 大数据平台架构与实践
  6. Java Statement PK PrepareStatement
  7. fiddler抓包1-抓小程序https包
  8. [Python设计模式] 第17章 程序中的翻译官——适配器模式
  9. Maven Web项目解决跨域问题
  10. 《SQL Server 2008从入门到精通》--20180716