Linux三剑客--Sed详细示例

前言:

sed 作为Linux三剑客之一,依赖于正则表达式,是强大的文本处理工具,可以根据条件对文本进行删除、修改、添加等操作。

一、Sed的基本用法

1.sed的选项
选项解释
-e指定要执行的命令
-n只输入处理后的行
-i只编辑文件而不输入结果
2.常用操作
指令解释
p输出指定的行
d删除指定的行
s替换
r读取文件
i输入
p;n奇数行
n;p偶数行
q退出sed
w另存为新文件
h保存当前模式到一个缓冲区
G取出保存的模式
y对应替换
c取代

二、sed用法详细示例

(一)显示

1.显示文件所有内容,相当于cat

sed -n 'p' file

2.显示第n行到第m行

sed -n '1,5p' file

3.显示奇数行

sed -n 'p;n' file 

4.显示偶数行

sed -n 'n;p' file

5.显示第n行到第m行中的奇数行

sed -n 'N,M{p;n}' file

6.显示第n行到第m行中的偶数行

sed -n 'N,M{n;p}' file

7.显示第n行

sed -n 'Np' file

8.显示尾行

sed -n '$p' file

9.从第n行开始,连续显示x行

sed -n 'N,+Xp' file

10.显示文件中包含某个字符的所有行

sed -n '/xxx/p' file

11.显示文件的行号(只显示行号,不显示内容)

sed -n '=' passwd

12.显示带有某个字符所在行的行号(只显示行号,不显示内容)

sed -n '/xxx/='
(二)插入

1.在含有某个字符的行前面添加新行

sed '/XXX/i XXX' file

如:
在这里插入图片描述
2.在含有某个字符的行后面添加新行

sed '/XXX/a XXX' file

如:
在这里插入图片描述
3.在第n行前/后添加新行

sed 'Na/iXXX' file

如:在第二行后添加新行123
在这里插入图片描述
在第二行前添加新行123
在这里插入图片描述

(三)删除

1.删除第n行

sed 'Nd' file

2.删除最后一行

sed '$d' file

3.删除以某个字符结尾的行

sed '/XXX$/d' file

4.删除以某个字符开头的行

sed '^XXX/d' file

5.删除第n-m行

sed 'N,Md' file

6.删除空行

sed '/^$/d' file

7.删除含有某个字符的行

sed '/XXX/d' file

8.删除不含某个字符的行

sed '/XXX/!d' file
(四)替换

1.删除文件中的某个字符(全文)

sed 's/XXX//g' file(实际就是将这个字符替换为空)

2.将一个字符替换为另一个字符

sed 's/XXX/YYY/g' file

3.将所有含有某个字符的行替换

sed '/XXX/c YYY' file

4.将包含某个字符的行,行中的某个字符替换为新的字符

sed '/XXX/s/YYY/ZZZ/g' file

如:将包含root的行,行中的0替换为123
替换前
在这里插入图片描述
替换后
在这里插入图片描述
5.将每行的第n个指定字符替换为另一个字符

sed 's/XXX/YYY/Np' file

如:将每行的第二个root替换为123
替换前
在这里插入图片描述
替换后
在这里插入图片描述
6.将第n-m行中的某个字符替换为新字符

sed 'N,Ms/XXX/YYY/g' file

如:将2-7行中的bin替换为123
在这里插入图片描述
7.在第n行行首插入字符

sed 'Ns/^/XXX/' file

8.在每行行首插入字符

sed 's/^/XXX/' file

9.在每行行尾插入字符

sed 's/$/XXX/' file

10.将第n行替换为新的一行

sed 'NcXXX' file

如:将第2行替换为+++++
在这里插入图片描述
11.对应替换

sed 'y/XXX/YYY/' file

如:替换前

替换后:将第二行中的bin对应替换为123(意思是b=1,i=2,n=3)
在这里插入图片描述

(五)移动

1.将包含某个字符的行另存为一个新文件

sed '/XXX/w new_file' file

2.将包含某个字符的行移至文件末尾

sed '/XXX/{H;d};$G' file

3.将第n-m行移至文件末尾

sed 'N,M{H;d};$G' file
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值