sed学习总结

本文详细介绍了sed命令的基础用法,包括sed的工作流程、基本语法、打印输出、匹配行、模式输出、删除行以及替换命令等内容,并提供了丰富的实例帮助理解。

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

sed学习总结

sed工作流


847278-20170213111024363-235509804.png

测试文件:cat employee.txt

101,John Doe,CEO
102,Jason Smith,IT Manager
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer
105,Jane Miller,Sales Manager

sed命令语法


sed [options] {sed-commands} {input-file}  (单条命令)
sed [options] -f {sed-commands-in-a-file} {input-file}  (脚本文件)
sed [options] -e {sed-command-1} -e {sed-command-2} {input-file} (多条命令)

sed打印输出


sed -n 'p'  employee.txt
101,John Doe,CEO
102,Jason Smith,IT Manager
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer
105,Jane Miller,Sales Manager
sed  'p'  employee.txt
101,John Doe,CEO
101,John Doe,CEO
102,Jason Smith,IT Manager
102,Jason Smith,IT Manager
103,Raj Reddy,Sysadmin
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer
104,Anand Ram,Developer
105,Jane Miller,Sales Manager
105,Jane Miller,Sales Manager
sed -n '2 p' employee.txt      仅输出第2行
sed -n '1,4 p' employee.txt    输出1到4行
sed -n '2,$ p' employee.txt    输出2到最后一行

匹配行


sed -n '1~2 p' employee.txt
101,John Doe,CEO
103,Raj Reddy,Sysadmin
105,Jane Miller,Sales Manager
1~2 匹配1,3,5,7……奇数行 
2~2 匹配2,4,6,8……偶数行 
1~2 匹配1,4,7,10……
1~2 匹配2,5,8,11……

模式输出


sed -n '/Jane/ p' employee.txt        输出与Jane匹配的行  
sed -n '/Jason/,4 p' employee.txt     输出从第一个匹配Jason的行到第4行
sed -n '/Raj/,$ p' employee.txt       输出第一个匹配Raj的行到最后一行
sed -n '/Raj/,/Jane/ p' employee.txt  输出匹配Raj的行到匹配Jane的行
sed -n '/Jason/,+2 p' employee.txt    输出匹配Jason的行再输出之后两行

删除行(仅影响输出不作源文件修改)


sed '2 d' employee.txt                删除第2行
sed '1,4 d' employee.txt              删除1到4行
sed '2,$ d' employee.txt              删除2到最后一行
sed '1~2 d' employee.txt              删除奇数行
sed '/Manager/ d' employee.txt        删除匹配Manager的行
sed '/Jason/,4 d' employee.txt        删除匹配Jason的行到第4行
sed '/Raj/,$ d' employee.txt          删除匹配Raj的行到最后一行
sed '/Raj/,/Jane/ d' employee.txt     删除匹配Raj的行知道匹配Jane的行
sed '/Jason/,+2 d' employee.txt       删除第一个匹配Jason的行及之后两行
sed '/^$/ d' employee.txt             删除空行
sed '/^#/ d' employee.txt             删除#开头的行(注释行)

替换命令


语法

sed '[address-range|pattern-range] s/originalstring/replacement-string/[substitute-flags]' inputfile

实例

sed 's/Manager/Director/' employee.txt         
sed '/Sales/s/Manager/Director/' employee.txt     在匹配Sales的行替换
sed 's/a/A/' employee.txt
sed 's/a/A/g' employee.txt                        全局替换
sed 's/a/A/2' employee.txt                        替换每行第2个a
sed -n 's/John/Johnny/p' employee.txt
sed 's/john/Johnny/i' employee.txt                忽略大小写

参考资料


[1]. Sed-and-Awk-101-Hacks.pdf

转载于:https://www.cnblogs.com/OneFri/p/6392967.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值