文章目录
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
- -i选项是就地执行的意思
可以查看一下man 帮助 。
[root@localhost sed]# man sed
演示几个实例操作
- [root@localhost sed]# sed ‘1,3a king’ ab //第一行到第三行后增加字符串"king"
Hello!
king
drink tea
king
ruby is me,welcome to my blog.
king
end - [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