文本三剑客☞sed

一、sed工作流程

在这里插入图片描述

  • 首先sed把当前正在处理的行保存在一个临时缓冲区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕中
  • sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改源文件
  • sed主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等

二、sed使用方法

sed常见的语法格式有两种,一种叫命令模式,另一种脚本模式

1.命令行格式:

这里是引用
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.sed基本命令(iac):

在这里插入图片描述
i 表 示 在 最 一 行 前 插 入 , i表示在最一行前插入, ia表示在最后一行插入在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.sed基本命令(rw!)

在这里插入图片描述
$r表示在最后一行读取在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.sed基本命令(sg):

  • s:用一个字符串替换另一个
  • g:在行内进行全局替换
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

5.sed基本命令(=&和i):

  • &:保存查找串以便在替换串中使用 ()
  • =:打印行号
  • -e:多次编辑
  • -i:修改原文件
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

三、sed命令综合运用

1.将/etc/vsftpd/vsftpd.conf这个文件里面不以#开头的行打印出来

这里是引用
在这里插入图片描述
但是还要用到管道符,两次grep太过于麻烦,可以直接使用扩展正则一次性完成!
在这里插入图片描述
如果要用sed完成该怎么完成!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.sed工具过滤ip地址:

这里是引用
如果只要后面的地址,不要前面的英文那些呢?
在这里插入图片描述
或者使用cut来提取
在这里插入图片描述

3.sed工具截取ip地址:

这里是引用

四、sed脚本使用

这里是引用
注意事项:
在这里插入图片描述

1.实例:

将前两行注释掉,然后第三行整行替换成lin,在最后一行添加******end********这里是引用
在这里插入图片描述
在这里插入图片描述
但是这样子并没有修改原文件,如果我们想让原文件也发生修改该咋办?
在这里插入图片描述
在这里插入图片描述

五、sed总结

这里是引用
在这里插入图片描述
在这里插入图片描述

### 关于 Sed 的使用教程 Sed(Stream Editor)是一个功能强大的流编辑器,广泛应用于 Linux 和 Unix 系统中。它可以高效地完成多种文本处理任务,例如查找、替换、删除以及格式化文本等操作[^1]。 #### 基本语法结构 Sed 的基本语法如下所示: ```bash sed [选项] '地址范围 操作命令' 文件名 ``` - **选项**:常用的选项包括 `-n` 表示只打印经过 `p` 命令处理的内容;`-e` 可以指定多条命令;`-f` 从脚本文件加载命令;`-i` 实现原地修改文件内容。 - **地址范围**:可以是具体的行号或者通过正则表达式匹配的模式。 - **操作命令**:常见的有替换 (`s`)、删除 (`d`)、插入 (`i`) 和追加 (`a`) 等。 --- #### 替换操作 (s 命令) `s` 命令是最常使用的命令之一,用于将特定文本替换为其他文本。其通用形式为: ```bash sed 's/pattern/replacement/flags' ``` - `pattern`: 被替换的目标字符串或正则表达式。 - `replacement`: 新的替代字符串。 - `flags`: 控制行为的标志位,比如 `g` 表示全局替换,`i` 忽略大小写。 ##### 示例代码 假设有一个名为 `example.txt` 的文件,内容如下: ``` hello world error found here another error line ``` 以下是几个典型的替换例子: ```bash # 将所有的 "error" 替换为 "warning" sed 's/error/warning/g' example.txt # 输出结果: # hello world # warning found here # another warning line ``` 如果只想替换每行的第一个匹配项,则省略 `/g` 参数: ```bash sed 's/error/warning/' example.txt # 输出结果: # hello world # warning found here # another error line ``` 还可以利用反向引用捕获分组并重新排列它们: ```bash echo "John Smith" | sed 's/\(.*\), \(.*\)/\2 \1/' # 输入:"Smith, John" # 输出:"John Smith" ``` --- #### 删除操作 (d 命令) `d` 命令用于删除满足条件的行。例如,删除包含某个关键字的所有行: ```bash sed '/pattern/d' 文件名 ``` ##### 示例代码 继续以上述 `example.txt` 文件为例: ```bash # 删除包含 "error" 的所有行 sed '/error/d' example.txt # 输出结果: # hello world ``` 也可以按照行号来删除某一行或多行: ```bash sed '2d' example.txt # 删除第 2 行 sed '2,3d' example.txt # 删除第 2 到第 3 行 ``` --- #### 插入与附加操作 (i/a 命令) - `i` 命令在指定位置之前插入新行。 - `a` 命令在指定位置之后附加新行。 ##### 示例代码 ```bash # 在第二行前插入一条消息 sed '2i This is an inserted line.' example.txt # 输出结果: # hello world # This is an inserted line. # error found here # another error line ``` 对于追加操作: ```bash sed '2a Appended after the second line.' example.txt # 输出结果: # hello world # error found here # Appended after the second line. # another error line ``` --- #### 组合多个命令 可以通过分号 `;` 连接多个命令,在单次调用中完成复杂任务。例如: ```bash sed -e 's/error/warning/g' -e '$ a End of file message' example.txt ``` 上述命令先将所有 `error` 替换为 `warning`,再在最后一行后面追加一段文字。 --- #### 原地编辑 (-i 选项) 当希望直接修改源文件而非仅显示改动时,可启用 `-i` 参数。例如: ```bash sed -i 's/error/warning/g' example.txt ``` 这会永久保存对 `example.txt` 的更改。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值