sed命令的详解

本文详细介绍SED命令在文本处理中的多种应用,包括行插入、文本替换、列操作等,通过实例展示如何高效编辑文本文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1参考博文
https://www.cnblogs.com/emanlee/p/3307642.html

制作一个测试文件

[root@localhost sed]# cat ab
Hello!
ruby is me,welcome to my blog.
end

sed 的常用选项

常用的 sed 编辑指令及示例
1. 替换
指令: s/pattern/replacement/
示例:

echo "Hello World" | sed 's/World/Sed/'
# 输出: Hello Sed
DiffCopyInsert
2. 插入
指令: i\文本
示例:

echo "Line 2" | sed '1i\Line 1'
# 输出: 
# Line 1
# Line 2
DiffCopyInsert
3. 追加
指令: a\文本
示例:

echo "Line 1" | sed '1a\Line 2'
# 输出: 
# Line 1
# Line 2
DiffCopyInsert
4. 替换整行
指令: c\文本
示例:

echo "Old Line" | sed 's/.*/New Line/'
# 输出: New Line
DiffCopyInsert
5. 读取文件
指令: r 文件
示例: (假设有一个文件 file.txt,内容为 Hello from file!)

echo "Before:" | sed '/^Before:/r file.txt'
# 输出:
# Before:
# Hello from file!
DiffCopyInsert
6. 写入文件
指令: w 文件
示例:

echo "Hello World" | sed 's/World/Sed/w output.txt'
# `output.txt` 文件中将包含: Hello Sed
DiffCopyInsert
7. 打印行
指令: l
示例:

echo -e "Line 1\nLine 2" | sed 'l'
# 输出: 
# Line 1
# Line 2
# (显示控制字符,如换行符)
DiffCopyInsert
8. 行号
指令: =
示例:

echo -e "Line 1\nLine 2" | sed '='
# 输出:
# 1
# Line 1
# 2
# Line 2
DiffCopyInsert
9. 退出
指令: q
示例:

echo "First Line" | sed '1q'
# 输出: First Line
DiffCopyInsert
10. 删除
指令: d
示例:

echo -e "Line 1\nLine 2" | sed '1d'
# 输出: Line 2
DiffCopyInsert
11. 保持空间
指令: h 和 g
示例:

echo "Hello" | sed 'h; s/Hello/Goodbye/; g'
# 输出: Goodbye
DiffCopyInsert
12. 读取下一行
指令: n
示例:

echo -e "Line 1\nLine 2" | sed 'n'
# 输出: Line 2
DiffCopyInsert
13. 打印内容
指令: p
示例:

echo "Line 1" | sed -n 'p'
# 输出: Line 1
DiffCopyInsert
14. 交换空间
指令: x
示例:

echo "Line 1" | sed 'h; x; x'
# 输出: Line 1
DiffCopyInsert
15. 字符转换
指令: y/char1/char2/
示例:

echo "apple" | sed 'y/aeiou/AEIOU/'
# 输出: ApplE
DiffCopyInsert
16. 匹配标记
指令: &
示例:

echo "Hello World" | sed 's/World/&!!!/'
# 输出: Hello World!!!

在第一行后添加内容

[root@localhost sed]# sed ‘1a drink tea’ ab //第一行后增加字符串"drink tea"
Hello!
drink tea
ruby is me,welcome to my blog.
end
[root@localhost sed]# cat ab //并没有添加成功
Hello!
ruby is me,welcome to my blog.
end
[root@localhost sed]# sed -i ‘1a drink tea’ ab //加上-i选项
[root@localhost sed]# cat ab
Hello!
drink tea
ruby is me,welcome to my blog.
end

  1. -i选项是就地执行的意思
可以查看一下man 帮助 。

[root@localhost sed]# man sed

演示几个实例操作

  1. [root@localhost sed]# sed ‘1,3a king’ ab //第一行到第三行后增加字符串"king"
    Hello!
    king
    drink tea
    king
    ruby is me,welcome to my blog.
    king
    end
  2. [root@localhost sed]# sed ‘1a drink tea\nor coffee’ ab
    //第一行后增加多行,使用换行符\n //第一行后增加多行,使用换行符\n
    Hello!
    drink tea
    or coffee
    drink tea
    ruby is me,welcome to my blog.
    end

sed过滤最后一行

 awk 'NF{a=$0}END{print a}' file.txt

sed 在文件最后插一个一列

 sed -i '$a 10.230.82.88 bomctestnjapp02' /etc/hosts

删除文本的最后一列

sed -i '$d' /etc/hosts 

sed 替换文件中某行的文本内容

sed -i 's/export  TMOUT=300/export  TMOUT=0/g' /etc/profile
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

运维螺丝钉

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

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

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

打赏作者

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

抵扣说明:

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

余额充值