Linux学习——sed工具的使用

这篇具有很好参考价值的文章主要介绍了Linux学习——sed工具的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、sed概述       

1.sed命令的常用选项:

2.sed命令的操作符:

二、sed命令的打印功能

(一)默认打印方式:

1.sed -e 'p' 123123.sh        --sed有一个默认输出,加上p,会打印两行

2. sed -n 'p' 123123.sh        -- -n禁止了默认输出,就只有一行

 3. 打印时对行号的操作sed -n '=' 123123.sh        --只显示行号

4. 显示行号和每行的内容        sed -n '=;p' 123123.sh

 (二)sed命令的寻址打印:

1.方式一:按照行号寻求内容

2.方式二:进行行号范围区间的打印

 3.方式三:指定间隔打印

4.方式四:对奇数行和偶数行的打印

 二、文本模式过滤行内容

1.方式一:对包含的字符串进行过滤打印

2.方式二:应用基础正则表达式进行打印

3.方式三:使用扩展正则表达式进行打印

三、sed的删除操作:

1.通过行号进行删除

2.匹配字符串内容删除

四、sed替换命令:

1.sed命令的增加:

五、总结:


一、sed概述       

        sed是文本处理工具,读取文本内容,根据指定的条件进行处理,如增删改查等,可以在无交互的情况下实现相当复杂的文本处理操作,sed被广泛应用于shell脚本,以完成自动化处理任务。

        sed也是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,成为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非使用重定向存储输出。sed主要用来自动编辑一个或多个文件;简化对文件的反反复复操作;编写转换程序等。

sed依赖于正则表达式

sed的工作原理:读取→执行→显示

基本操作格式:

sed -e '操作' 文件1 文件2

sed -e '操作' 文件1 文件2

sed -f 脚本操作 文件1 文件2

sed -i -e '操作' 文件1 文件2

执行多条命令的格式:

方式一:sed -e '操作1' -e '操作2' 文件

方式二:sed -e '操作1;操作2' 文件

方式三:sed -e 'n{

操作1

操作2

......

}' 文件1

1.sed命令的常用选项:

-e或--expression:表示用指定命令来处理输入的文本文件,只有一个操作命令时可省略,一般在执行多个操作命令使用

-f或--file=:表示用指定的脚本文件来处理输入的文本文件。

-h或--help:显示帮助。

-i:直接修改目标文本文件

-n:仅显示script处理后的结果

2.sed命令的操作符:

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

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

a:增加,在当前行下面增加一行指定内容。

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

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

y:字符转换,转换前后的字符长度必须相同。

p:打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有非打印字符,则以ASCII码输出。其通常与"-n"选项一起使用。

=:打印行号。

l(小写L):打印数据流中的文本和不可打印的ASCII字符(比如结束符$、制表符\t)。

r:高级正则表达式。


sed最为核心的功能是增删改查

二、sed命令的打印功能

(一)默认打印方式:

1.sed -e 'p' 123123.sh        --sed有一个默认输出,加上p,会打印两行

Linux学习——sed工具的使用,Linux学习,linux,学习,运维

2. sed -n 'p' 123123.sh        -- -n禁止了默认输出,就只有一行

Linux学习——sed工具的使用,Linux学习,linux,学习,运维

 3. 打印时对行号的操作sed -n '=' 123123.sh        --只显示行号

Linux学习——sed工具的使用,Linux学习,linux,学习,运维

4. 显示行号和每行的内容        sed -n '=;p' 123123.sh

Linux学习——sed工具的使用,Linux学习,linux,学习,运维

 (二)sed命令的寻址打印:

1.方式一:按照行号寻求内容

sed -n '1p' 123123.sh        --打印第1行

sed -n '4p' 123123.sh        --打印第4行

sed -n '$p' 123123.sh        --打印最后一行

Linux学习——sed工具的使用,Linux学习,linux,学习,运维

2.方式二:进行行号范围区间的打印

sed -n '1,3p' 123123.sh        --打印1-3行

sed -n '5,$p' 123123.sh        --打印第五行到最后一行

sed -n '2,+2p' 123123.sh        --打印第二行+两行的内容,相当于2,4p

Linux学习——sed工具的使用,Linux学习,linux,学习,运维

打印前n行:

sed -e '5q' 123123.sh

Linux学习——sed工具的使用,Linux学习,linux,学习,运维

 3.方式三:指定间隔打印

sed -n -e '3p' -e '8p' 123123.sh        -- 打印第3行和第8行

sed -n -e '2p' -e '$p' 123123.sh        -- 打印第2行和最后一行

Linux学习——sed工具的使用,Linux学习,linux,学习,运维

4.方式四:对奇数行和偶数行的打印

sed -n 'n;p' 123123.sh        -- 打印偶数行        'n'代表next

sed -n 'p;n' 123123.sh        -- 打印奇数行

这里的n就是指高级模式的意思,n在p前面,跳过一行,打印下一行,就是偶数行;在后面,就是打印第一行,然后跳过一行,形成奇数行。

Linux学习——sed工具的使用,Linux学习,linux,学习,运维

 二、文本模式过滤行内容

1.方式一:对包含的字符串进行过滤打印

//中间表示存放指定的内容

sed -n '/591/p' 123123.sh        -- 打印包含591的行

sed -n '/o/p' 123123.sh        -- 打印包含o的行

sed -n '/wo/p' 123123.sh        -- 打印包含wo的行

Linux学习——sed工具的使用,Linux学习,linux,学习,运维

2.方式二:应用基础正则表达式进行打印

sed -n '/^root/p' 123123.sh        -- 打印以root为开头的所有内容,全文本搜索

sed -n '/bash$/p' 123123.sh        -- 打印以bash结尾的所有内容,全文本搜索

sed -n '4,/bash$/p' 123123.sh        -- 从第四行开始,一直打印到第一个以bash为结尾的所在行

Linux学习——sed工具的使用,Linux学习,linux,学习,运维

3.方式三:使用扩展正则表达式进行打印

注意:

sed -r 支持扩展正则表达式。同时在使用{n}、{n,}、{n,m}时,括号{}前不需要加反斜杠\。

三、sed的删除操作:

sed -i 时会对文本进行实际操作(建议对目标文件先进行备份,再进行操作)

1.通过行号进行删除

sed -n '3d;p' 123123.sh        -- 删除第三行,打印剩余的所有内容

sed -n '5,8d;p' 123123.sh        -- 删除5到8行,打印剩余的所有内容

sed -n '5,$d;p' 123123.sh        -- 删除5到最后一行,打印剩余的所有内容

sed '4,6!d;p' 123123.sh        -- 除了4-6行,其他的全部删除

Linux学习——sed工具的使用,Linux学习,linux,学习,运维

2.匹配字符串内容删除

sed '/one/d' 123123.sh        -- 删除包含one的行

sed '/one/,/six/d' 123123.sh        -- 删除one到six的行

sed '/one/,/six/!d' 123123.sh        -- 除了one到six的行,其余的全部删除,反向删除

sed '/six/!d' 123123.sh        -- 除了six的行,其余的全部删除,反向删除

sed '/^$/d' 123123.sh        -- 删除文本空行

四、sed替换命令:

格式:行范围 s/旧字符/新字符/替换标记 文件名

替换标记:

数字:表明新字符串将替换地基础匹配的地方

g:表明新字符串将会替换所有匹配的地方

p:打印与替换命令匹配的行,与-n一起使用

w文件:将替换的结果写入文件中

sed命令的替换中:

s:替换字符串

c:整行替换

y:字符替换,替换前后的字符串长度必须相同

命令示例:

sed -n 's/root/test/2p' /etc/passwd        -- 指定第二个rooot,替换为test

sed -n 's/root/test/gp' /etc/passwd        -- 所有的root都替换为test

sed -n '/^root/ s/^/#/p' /etc/passwd        -- 以root开头开始处理,把开头为空的替换为#,相当于将整行添加注释#

Linux学习——sed工具的使用,Linux学习,linux,学习,运维

字母字符进行大小写的替换:

sed 's/[A-Z]/\l&/g' 123123.sh

-- 将大写全部转换为小写,l&是转换小写的一种特殊的符号,前面要加转义符"\"。

sed 's/[a-z]/\u&/' 123123.sh        -- u&是转换首字母大写的一种特殊的符号,前面要加转义符"\"。

sed 's/[a-z]/\U&/g' 123123.sh        -- 末尾加上了一个g,表示全部转换成大写

整行替换:

sed '/ONE/c ok' 123123.sh        -- 将含有ONE的整行替换为ok

sed '/TWO/c TEST' 123123.sh        -- 将含有TWO的整行替换为TEST

单字符的替换:

使用y,是对单个字符进行替换,每个字符需要一一对应,不是整体替换。前后字符串长度需要一致,不然会报错。

sed 'y/YH/78/' 123123.sh        -- 将TH替换为78

sed 'y/aaa/123' 123123.sh        -- 只匹配一次,输出111

1.sed命令的增加:

a:在行后添加内容

i:在行前面插入内容

r:在行后读入文件内容

命令示例:

sed '/three/a 123' 123123.sh

sed '/three/i 123' 123123.sh

sed '$r test2.txt' 123123.sh        -- 先读取test2内容,然后在123123.sh的末行插入test2.txt的所有内容。

五、总结:

1.sed命令时一种流编辑器读取文件会进行逐行读取加上指令操作,所以过大的文件一定要拆分后再交给sed处理。

2.sed -r 搭配扩展正则表达式使用,使用\{n\}        \{n,\}        \{n,m\}        不需要加"\"。

3.用-i时一定要先备份(尤其对重要文件的操作),或者事先试验好确定无误时,再使用-i。

4.sed命令的重点在于增删改查四个功能,可以运用再脚本中重要配置文件的修改、添加等作用尤其有效。文章来源地址https://www.toymoban.com/news/detail-660596.html

到了这里,关于Linux学习——sed工具的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)

    1、第一个案例:helloworld 2、打印运行的python进程 3、获取并打印参数 4、用脚本写for循环 5、使用C语言风格的for命令 6、while循环案例 7、使用break跳出外部循环 8、使用continue命令 9、case案例 10、判断两个数是否相等 11、使用双圆括号 12、使用双方括号 13、反引号的使用 14、字

    2024年02月07日
    浏览(49)
  • 使用 sed 命令删除 Linux 文件中的行

    在 Linux 系统中,sed(流编辑器)是一个功能强大的命令行工具,它可以用于对文本文件进行处理和转换。其中一个常见的用途是删除文件中的特定行。本文将介绍如何使用 sed 命令删除文件中的行,并提供相应的源代码示例。 要使用 sed 命令删除文件中的行,可以使用以下的

    2024年02月04日
    浏览(48)
  • Linux运维:推荐八款Linux远程连接工具

    目录 2、XShell 3、SecureCRT 4、PuTTY 5、WindTerm 6、iTerm2 7、MobaXterm 8、Termius 今天给大家推荐八款Linux远程连接工具,非常实用,希望对大家能有所帮助! 1、NxShell NxShell是一款开源的Linux远程管理工具,是我日常远程Linux服务器必备的工具,界面比较好看、可以直接SFTP。针对软件的

    2023年04月19日
    浏览(43)
  • Linux 可视化管理(webmin 和 bt(宝塔)运维工具的详细安装教程:webmin 安装配置和使用,bt 宝塔 的安装配置和使用)

    目录 第十八章 webmin 和 bt(宝塔) 运维工具 18.1 webmin 安装配置和使用 18.1.1 基本介绍 18.1.2 安装 webmin配置 18.1.3 简单使用演示 18.2 bt 宝塔 的安装配置和使用 18.2.1 基本介绍 18.2.2 安装和使用 18.2.3 bt 宝塔使用介绍 18.2.4 如果 bt 的用户名,密码忘记了。使用 bt default 可以查看 18.1

    2024年02月09日
    浏览(50)
  • Linux(CentOS)运维脚本工具集合

    备份指定目录 查看CPU、磁盘、内存使用率 返回结果 显示基础信息-详细 查看进程pid,启动时间,持续执行时间 根据进程id查看工作目录 清除Linux系统占用缓存 查看端口是否使用 demo: 查看进程使用的端口 demo 查看端口所在进程 demo 查看目录下各目录占用空间以及最大文件或

    2024年02月12日
    浏览(48)
  • Linux:使用sed命令替换文件内容实操及各种报错问题解决

    工作遇到需要在页面一键操作,后端进行自动化运维部署的事情,这里就用的了 sed 命令,linux的学问真的要花时间好好学习一番了! 上面图片是AI创作生成!如需咒语可私戳哦! 以下为实际工作简化后描述 简要说明下流程 原来的流程 : 每次新增连接服务,都要进行命令行

    2023年04月09日
    浏览(77)
  • Linux:ansible自动化运维工具

    当前所有执行权限我是在root下执行的,如果提示权限之类的,可以在每句命令前  加上 sudo     ansible主服务器  192.168.0.194         另外两个客户端分别为 192.168.0.193   192.168.0.192 软件只需要在主服务器上安装,客户端不需要去安装软件,因为他们相互使用的是ssh 只需要

    2024年02月11日
    浏览(42)
  • Linux系统运维:性能监视和分析工具sar命令详解

    目          录 一、sar工具介绍 二、sar工作原理 (一)原理概述 (二)sar数据收集器 三、sar命令语法 四、sar主要功能介绍 (一)功能概述 (二)CPU统计数据 (三)磁盘I/O统计数据 (四)网络统计数据 1、是使用-n DEV选项的sar输出 2、关于网络错误的信息可以用sar -n EDE

    2024年02月21日
    浏览(73)
  • Linux6.2 ansible 自动化运维工具(机器管理工具)

    第一章 LINUX ansible 自动化运维工具(机器管理工具) 一、概述 Ansible是一个基于Python开发的配置管理和应用部署工具,现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点,Pubbet和Saltstack能实现的功能,Ansible基本上都可以实现 Ansible能批量配置、部署、管理

    2024年02月14日
    浏览(46)
  • Linux运维学习笔记

    此笔记为学习https://www.bilibili.com/video/BV1nW411L7xm/?vd_source=3f851e85e66ef33269a2eefee664cec2的学习记录,希望能找到运维的实习吖O(≧▽≦)O 目录 导航 Linux的终端 终端组成部分 Linux关机命令 使用VMware备份操作系统 快照 克隆 Linux系统的文件 文件与文件夹 Linux系统的文件目录结构 Li

    2024年02月08日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包