IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 005 Linux 命令三剑客之-sed -> 正文阅读

[系统运维]005 Linux 命令三剑客之-sed

在这里插入图片描述

  • grep:数据查找定位
  • awk:数据切片,数据格式化,功能最复杂
  • sed:数据修改

01 Linux 命令三剑客?

三剑客各有所长,和锅锅一一搞起就是了!

  • sed:擅长数据修改。
  • grep:擅长数据查找定位。
  • awk:擅长数据切片,数据格式化,功能最复杂。
    sed(全称:Stream Editor),擅长对文件做数据做修改的操作,非常高效。这里总结一些增删改的基础用法。

02 不用 vim 怎么在文件末尾添加内容呢?

  • 使用 vim 需要在文件内部编辑,有时只是想在文件底部添加一句话或一个参数,需要经历vim [文件] ->G (移动到底部)->o 下一行添加 ->编辑内容 ->保存退出。
  • 这个步骤真麻烦,sed 可以轻便的实现这些功能!
  • ps: 其实还有个echo命令也有这个功能,echo “文件内容” >> [文件名]。

03 增(追加),内置命令字符a

使用示例:

  • sed -i ‘$a 哈哈哈’ info.log #在文件末尾追加"哈哈哈"字符串。
  • sed -i ‘20a 啦啦啦’ info.log #在文件【info.log】第20行字符下一行,追加字符串“啦啦啦”。
  • sed -i ‘20i 啦啦啦’ info.log #在文件【info.log】第20行字符上一行,追加字符串“啦啦啦”。
  • sed -i ‘a 嘎嘎’ info.log #在文件【info.log】每行字符下一行追加字符串“嘎嘎”。
  • sed -i ‘i 大大’ info.log #在文件【info.log】每行字符上一行追加字符串“大大”。
  • sed -i ‘1i 第一行啦’ info.log #在文件【info.log】开头插入字符串“第一行啦”。
  • sed -i ‘/book/a HH’ info.log #匹配包含 book 的行,并在其后添加 book。

04 改(替换),内置命令字符s

使用示例:

  • sed -i ‘s/book/books/’ info.log #把【info.log】文件里第一个"book" 替换为"books"。
  • sed -i ‘s/book/books/g’ info.log #把【info.log】文件里所有的"book" 替换为"books"。

05 删,内置命令字符d

使用示例:

  • sed -i ‘2d’ info.log #删除【info.log】文件的第二行。
  • sed -i ‘1,3d’ info.log #删除【info.log】文件的1到3行。
  • sed -i ‘/^啦啦啦/,/$HH/d’ info.log #删除【info.log】中以 “啦啦啦” 开头一直到以"HH"结尾的行。
  • sed -i ‘/^$/d’ info.log #删除所有的空白行

06 内置命令 s (替换作用)高级使用

(1)替换命令的格式

sed [选项] s/[pattern]/[replace]/[flags]

[选项]常用的几个参数:

  • -f #script-file 从文件中读取脚本指令,对编写自动脚本程序很实用。
  • -i #该选项将直接修改源文件,否则所有的操作对文件都不生效哦,当然线上使用的时候要谨慎!
  • -e #script 允许多个脚本指令被执行。

[pattern]
含义:待匹配的需要替换的内容。

[replace]
常见的特殊含义字符:

  • & # 用正则表达式匹配的内容进行替换。
  • \ # 转义(转义替换部分包含:&、\等)。

[flags]
常见的可选参数:

  • -n # 1-512之间的数字,表示对[pattern]中指定内容第n次出现进行替换。如一行中有3个H,而只想替换第二个H。
  • -g # 对[pattern]中指定的内容进行全局更改。没有g则只有第一次匹配被替换。

(2) 多个sed命令执行

多个sed命令依次执行,用分号分割或加选项 -e,
使用示例:

  • sed ‘s/yes/no/;s/static/dynamic/’ info.log # 示例1,同时指定了2个sed命令。
  • sed -e ‘s/yes/no/’ -e ‘s/static/dynamic/’ info.log #示例2,同时指定了2个sed命令。

(3)实践 sed 搜寻替换

把 test.html 文件中的第二个 <body> 替换为 </body>

<html>
<body>Hello the World!<body>
</html>

分析实际就是把第二个 body 替换为 /body,命令如下。

sed -i 's/body/\/body/2'  test.html

(4)实践 sed,写一个脚本实现替换功能

把 test.html 文件中的第二个 <body> 替换为 </body>

<html>
<body>Hello the World!<body>
</html>

分析实际就是把第二个 body 替换为 /body,命令如下。
编写执行脚本的步骤如下:

touch sed.sh
sed.sh 中写入脚本内容:

#sed替换脚本
s/body/\/body/2

对sed.sh 脚本赋予可执行权限
chmod ug+x sed.sh

执行sed.sh 脚本,对文件进行处理
sed -i -f sed.sh test.html

07小结

  • (1)内置命令字符,即上面单引号内的的 i(insert)、a(append)、s(search&replace)、d(delete),插入、追加、替换、删除,分别小结了其用法。
  • (2)$代表文件末尾,^代表文件开头。
  • (3)sed 的 -i (注意这个是可选参数,和单引号内的 i 不是一个含义啦。)选项可以直接修改文件内容,这功能非常有帮助!如果你有一个 100 万行的文件,你要在第 100 行加某些文字,此时使用 vim 可能会疯掉!sed 命令却可以非常高效率的来干这个!
  • (4)此外还介绍了 sed 的内置命令 s 的高级用法,sed 最擅长的就是数据修改!锅锅就说到这里,下期见!

「不甩锅的码农」原创,转载请注明来源,未经授权禁止商业用途!同名 GZH 请关注!

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-01-25 10:59:37  更:2022-01-25 11:01:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 8:39:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码