Linux文本搜索(二)之 sed

sed

一般用于对文本内容做替换

1. 基本使用
  1. sed的基本工作方式
  • 将文件以行为单位读取到内存(模式空间)
  • 使用sed的每个脚本对该行进行操作
  • 处理完成后输出该行
  1. sed的替换命令s:
  • sed ‘s/old/new/’ filename …
  • sed -e ‘s/old/new/’ -e ‘s/old/new/’ filename … 依次执行每一条替换指令 == sed ‘s/old/new/;s/old/new/’ filename …
  • sed -i ‘s/old/new/’ filename … 将替换后的内容写入原文件
  1. 代正则表达式的替换命令s:
  • sed ‘s/正则表达式/new/’ filename
  • sed -r ‘s/扩展正则表达式/new/’ filename
  1. 例子
[hadoop@bigdata tmp]$ sed "s/a/aa'/" afile a1file 
aa' a a
aa' a a

# 依次执行多条指令
[hadoop@bigdata tmp]$ sed -e 's/a/aa/' -e 's/aa/bb/' afile 
bb a a
[hadoop@bigdata tmp]$ sed 's/a/aa/;s/aa/bb/' afile 
bb a a

# 写回原文件
[hadoop@bigdata tmp]$ sed -i 's/a/aa/;s/aa/bb/' afile 
[hadoop@bigdata tmp]$ cat afile 
bb a a

# 替换内容写入写文件, > 覆盖写     >>  追加写
[hadoop@bigdata tmp]$ sed 's/a/aa/;s/aa/bb/' afile > bfile
[hadoop@bigdata tmp]$ cat bfile 
bb a bb

# 使用正则表达式     扩展元字符要使用 -r
[hadoop@bigdata tmp]$ sed 's/b*/cc/' afile 
cc a bb
[hadoop@bigdata tmp]$ sed -r 's/b+/cc/' afile 
cc a bb
[hadoop@bigdata tmp]$ sed -r 's/b?/cc/' afile 
ccb a bb

# 回调
[hadoop@bigdata tmp]$ sed -r 's/(a.*b)/\1:\1/' afile 
bb
ab:ab
aaa
bbb
aab:aab
abbb:abbb
abb:abb
axyzb:axyzb
  1. 几个注意的点
  • 如果替换的内容中出现了和分割符一样的字符,可以将分隔符修改为其它字符
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值