一、sed简介
sed是一种流编编器,它是文本处理中非常中的工具,能够完美的配合正则表达式便用,功物能不同凡响。
处理时,把当前处理的行存储在临时缓冲区中,称为”模式空间”( oattern space),接看用sed命令处理缓冲区中的内容,处理成后,把缓冲区的内容送往屏幕显示。
接着理下一行,这样不断重复,直到文件末。文件内容没有改改变,除非使用了写入的命令,将内容更新。
定址用于决定对哪些行进行编辑。地址的形式可以是数字、正则表达式、或二者的结合。如果没有指定地址,sed将处理输入文件的所有行。
 
二、sed命令功能
命令  功能
a\  在当前行后添加一行或多行。多行时除最后一行外,每行末尾需用“\”续行
c\  用此符号后的新文本替换当前行中的文本。多行时除最后一行外,每行末尾需用"\"续行
i\  在当前行之前插入文本。多行时除最后一行外,每行末尾需用"\"续行
d   删除行
h   把模式空间里的内容复制到暂存缓冲区
H   把模式空间里的内容追加到暂存缓冲区
g   把暂存缓冲区里的内容复制到模式空间,覆盖原有的内容
G   把暂存缓冲区的内容追加到模式空间里,追加在原有内容的后面
l   列出非打印字符
p   打印行
n   读入下一输入行,并从下一条命令而不是第一条命令开始对其的处理
q   结束或退出sed
r   从文件中读取输入行
!   对所选行以外的所有行应用命令
s   用一个字符串替换另一个
g   在行内进行全局替换
w   将所选的行写入文件
x   交换暂存缓冲区与模式空间的内容
y   将字符替换为另一字符(不能对正则表达式使用y命令)
 
三、sed常见命令参数
p:print
d:delete
=:打印匹配行的行号
-n 取消默认的完整输出,只要需要的  
-e 允许多项编辑
-i 修改文件内容
-r 不需要转义
 
四、举例sed常见用法
源文件如下:
1、只打印第三行文字
sed -n '3p' 123.txt
 
2、只查看文件的第3行到第9行
sed -n '3,9p' 123.txt
 
3、过滤特定字符串,显示正行内容
sed -n '/222/p' 123.txt
 
4、打印1-5行,并显示行号
sed -n -e '1,5p' -e '='   123.txt
 
5、仅仅显示匹配字符串的行号
sed -n '/5555/=' 123.txt
 
6、将‘1111’替换为‘1111第一行’
sed 's/1111111/11111第一行/g' 123.txt
注:-i命令才会真实生效
sed -i 's#222#222第二行#g' 123.txt
 
7、打印最后一行
sed -n  '$p' 123.txt
 
8、在文件第一行添加start,文件结尾添加over
界面现实:sed -e '1i start' -e '$a over' 123.txt
真实写入:
sed -i -e  '1i start' -e '$a over' 123.txt
 
9、在文件第一行和第四行的每行下面添加helloworld
sed '1,4i helloworld' 123.txt
 
 
10、& 符号在sed命令中代表上次匹配的结果
sed 's/第二行/已经不是&/g' 123.txt
 
11、删除第3到第9行,只是不显示而已
sed '3,9d' 123.txt
 
12、删除包含"start"的行到包含"999"的行之间的行
sed '/start/,'/999'/d' 123.txt
 
13、-e是编辑命令,用于多个编辑任务
打印1到2行的内容,并匹配‘第二行替换为'我是第三行了'
sed -e '1,2d' -e 's/第二行/我是第一行了/g' 123.txt
 
 
14、-r命令是读命令。sed使用该命令将一个文本文件中的内容加到当前文件的特定位置上
sed '/3333/ r test002.txt' 123.txt
【123.ltxt  匹配root后读入test002.txt的内容(helloworld123:)在匹配内容之下,仅显示用】
 
15、-w是写入命令
将【123.txt匹配root后写入test002.txt',真实写入,,添加-n参数后,不打印源文件】
sed '/第二行/ w test002.txt' 123.txt
 
16、sed的正则匹配
正则匹配IP和子网掩码
ifconfig | sed -n '2p'
ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'(提取ID地址)
find . -name "*.txt" | xargs sed -i 's/第二行/第三行/g'(配合find命令使用:查找并替换)
 
 

Liunx常用操作(八)-sed命令详细说明的更多相关文章

  1. Liunx常用操作(一)-删除命令

    在linux命令行模式下,如何一次性快速删除一行刚刚输入的命令? 经常在命令行输入命令的时候,一段文字都需要删除,一个字段一个字段,比较耗费时间 以下提供一些命令,配合在一起操作,可以一定程度提高工作 ...

  2. python anaconda 常用操作;conda 命令指南

    在使用 python anaconda时,经常会用到很多常用操作,记录下来,方便以后更好地使用: conda: Conda既是一个包管理器又是一个环境管理器.你肯定知道包管理器,它可以帮你发现和查看包 ...

  3. Liunx常用操作(二)-vim中删除命令

    VIM简介 Vim是一个类似于Vi的著名的功能强大.高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性.VIM是自由软件.Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Ema ...

  4. Liunx常用的100条命令汇存

    1.关机 shutdown -h now 立刻关机 poweroff shutdown -r now 立刻重启 reboot logout 注销 2.进入图形界面 startx 3.vi编辑器 [vi ...

  5. Python脚本控制的WebDriver 常用操作 <八> 简单的对象定位

    这一部分的内容,将是在WebDriver中,定位元素方法的演示,是将Selenium中Selenese元素定位命令的WebDriver中使用方法的结合 Selenium中元素定位方法复习可以参考: & ...

  6. Shell的常用十八条命令

    Shell的18条常用命令整理 1. ls: 类似于dos下的dir命令 ls最常用的参数有三个: -a -l -F. ls –a Linux上的文件以.开头的文件被系统视为隐藏文件,仅用ls命令是看 ...

  7. liunx 常用操作(自用)

    Centos7解压文件 tar -zxvf 文件名[test.tar.gz] Centos7安装vim yum -y install vim* Centos7安装ifconfig yum instal ...

  8. Liunx常用操作(五)-如何查询文档中的冒号与引号

    liunx下面有如下一段包含json格式的文档 一.单查所有冒号: .txt | grep [:] 结果如下: 二.单查所有引号: 这里需要转义 .txt | grep [\"] 三.gre ...

  9. MySql常用操作【基础且详细(●'◡'●)】

    有那么挺长段时间没有敲代码了,今敲起来竟然有些sql都想不起来了

  10. 文本处理sed常用操作

    文本处理sed常用操作 linux sed (stream editor) is a Unix utility that parses and transforms text, using a sim ...

随机推荐

  1. .NET8 AOT和JIT的性能,谁更高呢?

    一: 有人问:.NET8 AOT和JIT的性能,谁更高呢? 原文:.NET8 AOT和JIT的性能,谁更高呢? 其实这个答案非常明显,那就是JIT的性能更高.为什么?原因在哪?因为JIT是随时可能分层 ...

  2. 接收json数据

    1.导入坐标: <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId& ...

  3. MySQL调优的一些总结

    SQL优化可以从那几个方面去优化 1.基本写法优化: 1.少使用select * ,尽量使用具体字段: 2.对于条件来说等号之类两边的字段类型要一致,字符串不加单引号索引会失效: 3.尽量少使用Ord ...

  4. 如何 使 Java、C# md5 加密的值保持一致

    Java C# md5 加密值保持一致,一般是编码不一致造成的值不同 JAVA (加密:123456) C#(加密:123456) UTF-8 e10adc3949ba59abbe56e057f20f ...

  5. 【OpenCV】 OpenCV 源码编译并实现 CUDA 加速 (Windows)

    目录 1. 环境准备 1.1 软件环境 1. 2 源码下载 2. CMake编译项目 2.1 创建cmake项目 2.2 设置编译配置 2.3 解决异常 2.3.1 文件下载异常 2.3.2 解决CU ...

  6. Linux集群存储配置

    RH436_EX集群 介绍Linux环境下集群架构,Linux开源集群软件的安装及配置使用,软件与软件之间的组合.实现高可用集群,负载均衡集群;负载均衡.高可用集群与存储集群间的多集群混合架构使用. ...

  7. Go 语言为什么不支持并发读写 map?

    大家好,我是 frank ,「 Golang 语言开发栈」公众号作者. 01 介绍 在 Go 语言项目开发中,我们经常会使用哈希表 map,它的时间复杂度是 O(1),Go 语言中的 map 使用开放 ...

  8. Flutter GetX的事件监听

    Flutter GetX的事件监听 import 'package:flutter/material.dart'; import 'package:flutter_code/page/book/boo ...

  9. 你的Parquet该升级了:IOException: totalValueCount == 0问题定位之旅

    摘要:使用Spark SQL进行ETL任务,在读取某张表的时候报错:"IOException: totalValueCount == 0",但该表在写入时,并没有什么异常. 本文分 ...

  10. 带你深入理解Java的IO到底是个啥

    摘要:操作系统就是管家,电脑的设备就是资源,如果进程先要操作资源,必须要进行系统调用,有操作系统去处理,然后再返回给进程,这样的代理模式是不是很常见?因此app 就是你写的程序,资源就是硬盘或者其他的 ...