linux对文本流处理命令sed

本文深入探讨了sed命令的使用技巧,包括模式匹配、多行操作、否定命令、分支与测试、模式替换等核心功能,并提供了实例代码演示,旨在帮助读者高效地处理文本文件。

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

Sed

sed命令中//中为模式匹配状态

1. 单行next命令

$ sed /header/{

>n

>d

>} data.txt  //删除匹配行下一行

2. 删除空行

$sed /^$/d data.txt //删除所有的空行

3. 多行删除

$sed N;/1\n2 data.txt //仅删除1行,即删除模式空间中的第一行

4. 组合多行

$ sed /header/{

>N

>s/\n/ /

>} data.txt  //替换匹配行下一行的换行符

5. 多行打印命令

$sed -n 

>N

>//P

> data   //发生多行匹配时,P命令只打印模式空间的第一行

6. 模式空间和保留空间

模式空间是一个活动的缓冲区,保留空间是暂时保留文本行的空间

5个保留空间有关的命令

将模式空间复制到保留空间里

将模式空间追加到保留空间里

将保留空间复制到模式空间里

将保留空间追加到模式空间里

将模式空间和保留空间的内容交换

7. 否定命令

感叹号命令(!)用于否定命令。在通常命令被激活的地方不激活命令。

$ sed {

>$!N

>s/123/234/

>} data.txt    //$!N表示在最后一行不执行N命令

创建范转行sed

$sed -n {

>1!G

>h

>$p

} data.txt  //第一行不执行G命令

8. 更改命令流

分支

[address] b [label]

$sed {

>2,4b

>s/2/--/

>} data.txt   //跳过24行的数据进行替换

$sed {

>/first/b jump1

>s/is/might/

>:jump1

>s/data/text/

>} data.txt   //在第二个替换时,跳过first替换

$sed -n {

>:start

>s/,//2p

>/,/b start

>} data.txt   //从第二次出现逗号时替换,直到没有逗号可以匹配时为止

测试

[address] t[label]

$sed {

>s/first/starting/

>t

>s/line/test/

>} data.txt   //如果第一个匹配没有成功则执行第二个,否则不执行

$sed -n {

>:start

>s/,//1p

>t start

} data.txt  //匹配成功则执行start标签

9. 模式替换

与号

$sed s/.at/&/g data.txt   //&替代前边匹配模式的.at

替换个别单词

$sed s/furry \(.ar\) (is)/\1 \2/ data.txt   //\1,\2分别替换小括号的内容

10. 对文件中的行计数

$sed = data.txt|sed N;s/\n/ / data.txt    //显示行号

11. 打印十行以后的数据

$sed '{:start;$q;N;11,$D;b start}' /etc/group

12 删除多次出现空行的行仅留一行

sed '/./,/^$/!d' data

13 删除开头为空的行

sed '/./,$!d' data

14. 删除结尾的空行

$sed {:start;/^\n*$/{$d;N;b start}} data.txt

15. 删除HTML标记

$sed s/<[^>]*>//g;//^$/d data.txt




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值