Shell语言基本语法总结(5)文本处理之sed

九、文本处理之sed 增删改查

  • sed命令处理过程按照行为单位,一行一行的处理,直至最后一行结束
  • 工作原理:sed 命令读取当前行到内存中,根据条件进行判断是否符合,若符合则输出改行,继续读下一行;若不符合条件,则直接读取下一行;一行一行的读取,直至数据最后一行,程序结束。

9.1、查询(重要)

  • 命令格式:sed [选项] “条件 命令” 文件
  • 选项
选项 解释
-n 取消自动打印模式空间(原数据) 一般与p一起使用
-r 使用扩展正则表达式
-I 忽略大小写
条件 解释
n 按行号查找 ,第n行
n,m 按行号查找 ,第n—m行
n,+m 按行号查找 ,第n—n+m行
/n/ 按内容查找 ,包含n的行
/n/,/m / 按内容查找 ,从包含n的行到包含m的行
$ 最后一行
  • 这些条件查询都可以用户删除和增加用法中
命令 解释
p 显示print
  • 数据准备
# s.txt 各列含义:姓名 性别 年龄 职业
cxy,male,19,stu
zzf,female,20,actor
zjm,female,22,actor
ycy,female,23,star
cxl,male,24,stu
bl,female,26,star

9.1.1、np 第n行;n,mp 第n行到m行;n,+mp 第n到n+m行 p取行

  • np 打印文件的第三行数据 (-n只显示需求结果)
[hadoop1@hadoop1 test]$ sed -n '3p' s.txt
zjm,female,22,actor
  • n,mp 打印第2到4行数据
[hadoop1@hadoop1 test]$ sed -n '2,4p' s.txt
zzf,female,20,actor
zjm,female,22,actor
ycy,female,23,star
  • n,+mp 打印第2行和往下3行的内容
[hadoop1@hadoop1 test]$ sed -n '2,+3p' s.txt
zzf,female,20,actor
zjm,female,22,actor
ycy,female,23,star
cxl,male,24,stu
  • 获取最后一行内容
[hadoop1@hadoop1 test]$ sed -n '$p' s.txt
bl,female,26,star

9.1.2、/查询内容/p 支持正则 查询包含指定内容的行

  • 查询 cxl 所在行
[hadoop1@hadoop1 test]$ sed -n '/cxl/p' s.txt
cxl,male,24,stu
  • 查询 cxl 或 cxy 所在行
[hadoop1@hadoop1 test]$ sed -n -r '/cxl|cxy/p' s.txt
cxy,male,19,stu
cxl,male,24,stu
  • 分别显示空行和非空行( ! 的妙用)
# 打印原数据
[hadoop1@hadoop1 test]$ echo -e "123\n\n456\n789"
123

456
789
# 显示空行
[hadoop1@hadoop1 test]$ echo -e "123\n\n456\n
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值