一篇文章教会你使用Linux的‘sed‘基础命令

Linux sed 命令详解

  sed 是 Linux 系统中非常强大的流编辑器,可对文件或文本流进行查找、替换、插入和删除等操作。


1、基本语法

sed [选项] '命令' 文件名

其中:

  • 选项
    • -e:直接在命令行模式下运行 sed 脚本。
    • -i:对文件内容进行原地修改(在文件中直接替换)。
    • -n:安静模式(默认输出已匹配的行,可以结合 p 命令使用)。
    • -f:从指定的脚本文件中读取 sed 命令。
  • 命令sed 中的命令用于执行查找、替换、插入和删除等操作。

2、常用命令

2.1 替换

语法

sed 's/原字符串/新字符串/标志' 文件名
  • s:表示替换操作。
  • 标志:常用的标志是 g,表示全局替换。

示例

# 将文件 test.txt 中的 "hello" 替换为 "hi"
sed 's/hello/hi/' test.txt

# 将文件 test.txt 中的所有 "hello" 替换为 "hi"(全局替换)
sed 's/hello/hi/g' test.txt

# 使用 -i 选项直接修改文件内容
sed -i 's/hello/hi/g' test.txt

运行结果
在这里插入图片描述

2.2 删除行

语法

sed '行号d' 文件名
  • d:表示删除操作。

示例

# 删除 test.txt 文件中的第 2 行
sed '2d' test.txt

# 删除第 2 到第 4 行
sed '2,4d' test.txt

运行结果
在这里插入图片描述

2.3 查找并打印行

语法

sed -n '/模式/p' 文件名
  • -n:安静模式,只输出匹配的行。
  • /模式/:匹配的模式。
  • p:表示打印操作。

示例

# 打印文件test.txt 中包含 "hello" 的行
sed -n '/hello/p' test.txt

运行结果
在这里插入图片描述

2.4 插入与追加

语法

sed '行号i\内容' 文件名    # 插入
sed '行号a\内容' 文件名    # 追加
  • i:在指定行前插入内容。
  • a:在指定行后追加内容。

示例

# 在第 2 行前插入 "This is an inserted line."
sed '2i\This is an inserted line.' test.txt

# 在第 2 行后追加 "This is an appended line."
sed '2a\This is an appended line.' test.txt

运行结果
在这里插入图片描述

2.5 多命令组合

使用 -e 选项,或者用 ; 分隔命令,可以一次执行多个 sed 命令。

示例

# 在 test.txt 中,先替换 "hello" 为 "hi",然后删除第 3 行
sed -e 's/hello/hi/g' -e '3d' test.txt

运行结果
在这里插入图片描述


3、高级用法

3.1 替换并保存结果到新文件

可以将结果重定向到新文件,而不更改原文件内容。

# 将hello替换为hi并将替换后的结果输出到new_test.txt
sed 's/hello/hi/g' test.txt > new_test.txt

运行结果
在这里插入图片描述

3.2 在范围内替换

可以指定行范围,仅对特定行范围内的内容进行替换。

示例

# 只在第 2 到第 4 行内将 "hello" 替换为 "hi"
sed '2,4s/hello/hi/g' test.txt

运行结果
在这里插入图片描述

3.3 正则表达式匹配

sed 可以使用正则表达式匹配字符串,例如查找包含特定模式的行。

示例

# 将所有以 "test" 开头的行的 "test" 替换为 "exam"
sed '/^hello/s/hello/hi/' test.txt

在这里插入图片描述


4、小结

  • sed 非常适合处理大量数据的批量修改。
  • 使用 -i 选项时要小心,因为它会直接修改文件内容。
  • 本文只介绍了一些基本的用法,更多高级用法还需要大家自行组合摸索。

只有互相学习,才能获得更大的进步!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值