Linux中Sed命令怎么用?

发布时间:2020-05-26 17:14:39

来源:亿速云

阅读:245

作者:鸽子

Sed介绍:sed是文本处理工具,读取文本内容,根据指定的条件进行处理如删除、替换、添加等

sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。

Sed 主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

工作流程图

Sed三大功能:1.读取:sed 从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中;

2.执行:默认情况下,所有的 sed 命令都在模式空间中顺序地执行,除非指定了行的地址,否则 sed 命令将会在所有的行上依次执行;

3.显示:发送修改后的内容到输出流,再发送数据后,模式空间将会被清空。

注意:默认情况下,所有的 sed 命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化,除非是用重定向存储输出。

Sed命令两种格式:其中,“参数”是指操作的目标文件,当存在多个操作对象时用,文件之间用逗号“,”分隔;而 scriptfile 表示脚本文件,需要用“-f”选项指定,当脚本文件出现在目标文件之前时,表示通过指定的脚本文件来处理输入的目标文件。

sed [选项] ‘操作’ 参数

sed [选项] -f scriptfile 参数

常见的 Sed命令选项:语法:sed [options] [script] [inputfile]

-e :允许执行多个脚本;

-f :从脚本文件中读取命令;

-h :显示帮助;

-n :取消默认输出;

-i :直接修改原始文件;

-l:  指定行长度;

-u: 最低限度的缓存输入和输出

-r:在脚本中使用正则表达式

常见的操作选项:a:增加,在当前行下面增加一行指定内容;

c:替换,将选定行替换为指定内容;

d:删除,删除选定的行;

i :插入,在选定行上面插入一行指定内容;

p:打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容,通常与 -n选项一起使用;

s :替换,替换指定字符;

y :字符转换;

Sed 元字符集^: 匹配行开始,如:/^sed/匹配所有以sed开头的行。

$ : 匹配行结束,如:/sed$/匹配所有以sed结尾的行。

. : 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。

: 匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。

[] : 匹配一个指定范围内的字符,如/[ss]ed/匹配sed和Sed。

[^] : 匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。

(..) : 匹配子串,保存匹配的字符,如s/(love)able/\1rs,loveable被替换成lovers。

& : 保存搜索字符用来替换其他字符,如s/love/&/,love这成love。

\< : 匹配单词的开始,如:/\

\> : 匹配单词的结束,如/love\>/匹配包含以love结尾的单词的行。

x{m} : 重复字符x,m次,如:/0{5}/匹配包含5个0的行。

x{m,} : 重复字符x,至少m次,如:/0{5,}/匹配至少有5个0的行。

x{m,n} : 重复字符x,至少m次,不多于n次,如:/0{5,10}/匹配5~10个0的行。

Sed 常用操作

选择文本

sed -n 5p aa.txt

sed -n '2p,5p' aa.txt  #选择第2到第5行

sed -n '2p;5p' aa.txt   #选择第2和第5行

sed -n '/^5/p' aa.txt  #以5开头的行

sed -n '$p' aa.txt  #打印最后一行

sed -n '1~2p' aa.txt   #表示从第一行开始,没个行就打印出来

sed -n '/cc$/p' aa.txt   #以cc结尾的行

sed -n '/fff/,10p' aa.txt   #表示从含油字符串fff到第10行打印

备注:加上-n只显示出来,不会改变原文件,若要改变原文件,加上sed -i 。

替换文本g : 获得内存缓冲区的内容,并替代当前模板块中的文本。

p : 打印模板块的行。

w : file 写并追加模板块到file末尾。

例子:sed 's/e/E/' aa.txt

sed 's/e/E/g' aa.txt   #全文中e都替换成E

sed '1,5s/e/E/g' aa.txt  #第一行到第5行间e都替换成E

sed '6,/^6/s/f/E/g' aa.txt #以6开头的行f都替换成E

sed '/^6/s//E/g' aa.txt   #以6开头的行都替换成E

备注:后面不加上g,只会替换每行第一次会出现的字符串,sed 不会改变原文件,参数之间不一定非要使用斜线分割,也可以使用除空格,换行外的任意字符若要改变原文件,加上 -i 。

删除文本sed -e '3d' aa.txt  #删除第三行

sed -e '3,5d' aa.txt #删除3到5行

sed -e '$d' aa.txt  #删除最后一行

sed -e '1d;5d' aa.txt  #删除1,5行

sed -e '1~2d' aa.txt #删除奇数行

sed -e '0~2d' aa.txt  #删除偶数行

sed -e '1,/^6/d' aa.txt  #删除1到以6开头的行

sed -e '5,$d' aa.txt  #删除从5行到最后

sed '^$d' aa.txt  #删除空白行

备注:删除原文件内容要加上-i

追加文本sed '3a20200229' aa.txt  #第三行后追加

sed '/^8/a2020008' aa.txt  #以8开头的行后追加

备注:使用echo也可以追加,但> ,>>不一样。echo  "9988" >>aa.txt   在文本最后追加,

等于sed '$a9988' aa.txt

echo -e "999" >aa.txt  直接覆盖原文

插入文本sed '3i2128' aa.txt  #第三行插入

sed '/^9/i2128' aa.txt  #以9开头行插入

sed '$i2348' aa.txt  #末行插入,实际上是倒数第二行

组合命令

1.使用-e选项sed -n -e 's/c/C/g' -e '2,3p' aa.txt

2.使用分号分割sed -e 's/d/D/g;3i6868p' aa.txt

3.对一个地址使用多个子命令sed -n '1,5 {

s/c/C/g

s/e/E/g

2i5566

p

}' aa.txt

linux中往sed命令,Linux中Sed命令怎么用?相关推荐

  1. linux脚本中sed -i,Linux 中常用的sed命令

    sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space ...

  2. linux中sed命令用例,sed解析和用例(马哥视频笔记)

    sed(流编辑器) sed基本用法: sed:Stream EDitor 行编辑器(另一种:全屏编辑器:vi.vim) sed:模式空间 sed默认部编辑源文件,仅对模式空间中的数据做处理:而后将模式 ...

  3. linux中sed和find,Linux运维知识之Linux 之 sed 与 find 命令结合使用

    本文主要向大家介绍了Linux运维知识之Linux 之 sed 与 find 命令结合使用,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. sed 与 find 命令结合使用 目 ...

  4. linux sed 转义斜杠,sed命令中转义正斜杠[duplicate]

    使用Bash和SED我试图用URL替换js文件中的两个字符串 当我运行.sh脚本时,应该插入的两个url是输入参数 ./deploy.sh https://hostname.com/a/index.h ...

  5. linux 脚本追加最后命令,linux中sed命令批量修改

    sed命令下批量替换文件内容 格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径` 文件名 -i 表示inplace edit,就地修改文件 ...

  6. linux中sed提取ip,通过sed命令获取IP地址

    ifconfig wlan0 | grep 'inet addr' | sed 's/^.*addr://g' | sed 's/Bcast.*$//g' 整个操作过程如下: [root@localh ...

  7. linux sed在容器中怎么用,概述LFCS 基础之sed用法

    导读 Linux 基金会认证系统管理员(LFCS)的另一个有用的命令是 "sed",最初表示"流式编辑器" Streaming EDitor. "se ...

  8. linux中sed深入,Linux中的sed

    应用举例: 1.找出包含数字 0 的行 # sed -n '/0/p' /tmp/passwd # nl /tmp/passwd | sed -n '/0/p' 1.找出包含任意数字的行 # sed ...

  9. linux a文本编辑大全,Linux sed 命令 - Linux文档编辑命令大全

    Linux sed 命令是利用脚本来处理文本文件. sed 可依照脚本的指令来处理.编辑文本文件. Sed 主要用来自动编辑一个或多个文件.简化对文件的反复操作.编写转换程序等. 语法sed [-hn ...

最新文章

  1. 使用代理软件之后其他软件不能联网的解决方法
  2. Swift与Objective-C:与恐龙有关的趋势
  3. What's going to be? 2016-Oct-12
  4. python删除部分字符串_如何删除python列表中的部分字符串?
  5. sqlserver 函数手记
  6. html多行文本框_HTML的七大标签怎么运用?
  7. 【2019年天梯赛L2-029】特立独行的幸福(模拟)
  8. ECSHOP彩虹易支付插件,彩虹易支付对接ECshop支付接口插件,ECSHOP对接易支付接口插件【2022免签约免申请免企业免年费个人支付接口】
  9. 如何去掉图片上的文字?
  10. 科学计算机弧度,科学计算器角度换算(学生计算器怎么算角度)
  11. 向量叉乘计算多边形面积
  12. WinForm实现倒计时锁定程序完整源码附注释
  13. cocos2d 简单消除游戏算法 (一)
  14. [置顶]定向爬虫 - Python模拟新浪微博登录
  15. java获取唯一序列号,Android 获取本机唯一序列号 和可变UUID方法
  16. SWFUpload多文件上传使用指南
  17. 免费天气查询工具类源码,开箱即用,根据中国气象局API编写。高效稳定
  18. 动手学习深度学习——Pytorch版教程系列汇总(长期更新版)
  19. 涂鸦,Canvas绘图
  20. opencv 读取NV12格式(.yuv)文件,并转为RGB格式保存为JPG

热门文章

  1. MySQL的空值查询
  2. eas报错日记_金蝶EAS抓取性能日志说明
  3. logitech g hub一直在初始化_Wi-Fi中“2.4G”和“5G”的那些事儿
  4. python:pandas之read_csv
  5. 这 56 个代码注释让我笑吐了
  6. 蓝桥杯-最小乘积(java)
  7. No module named MNIST_写给小白的用fashion-mnist入门机器学习和深度学习的简单项目(非常全面!!!)...
  8. 玩转服务器(华为云)—购买配置登录篇
  9. QT旋转按钮控件的实现
  10. java中异常处理机制