一条命令sed

sed在处理文本时是逐行读取文件内容,读到匹配的行就根据指令做操作,不匹配就跳过。

sed -i "s/zxr/zhuxuerong/g" /home/zhuxuerong/test.txt
把/home/zhuxuerong目录下test.txt里的zxr替换为zhuxuerong

格式:sed -i 's/原字符串/替换字符串/g' filename
//替换文件中的所有匹配项

-i 表示inplace edit,就地修改文件

s (search)表示查找并替换

g (global)表示全局,全部

s 只针对文本中每行第一次出现的目标字符串有效,配合标志g可实现全部替换

命令中三根斜线分隔符是替换的样式,特殊字符需要使用反斜线”\”进行转义。有时候替换目录字符串中有较多斜线,此时可换为其它的分割符(如:?#)只需要紧跟s定义即可。
sed -i 's#原字符串#替换字符串#g' filename

#号在用环境变量替换且环境变量中有/时非常有用.比如

sed -i 's#aaa#'"$JAVA_HOME"'#g' a.txt
sed -i 's/^/添加字符串&/g' filename      #在所有行首添加(&符号可有可无)
sed -i 's/$/&添加字符串/g' filename       #在所有行末添加
sed -i '2s/原字符串/替换字符串/g' filename   #替换第2行符合的
sed -i '$s/原字符串/替换字符串/g' filename    #替换最后一行符合的
sed -i '2,5s/原字符串/替换字符串/g' filename  #替换2到5行符合的
sed -i '2,$s/原字符串/替换字符串/g' filename  #替换2到最后一行符合的
sed -i 's/^/添加的头部&/g;s/$/&添加的尾部/g' # 同时执行两个替换规则,在首尾都加上指定字符

^表示行首 $表示行尾

多个替换可以在同一条命令中执行,用分号;分隔,其格式为:
sed -i 's/原字符串1/替换字符串1/g;s/原字符串2/替换字符串2/g' filename


sed 's/原字符串/替换字符串/g' filename 不要参数i会把处理过的输出是直接输出到屏幕上而不改变原文件,加上参数i是就地修改文件(改变了原文件而不输出到屏幕)。没有参数i的情况下可以将输出重定向。
sed 's/原字符串/替换字符串/g' filename > newfile 更改后的内容留存在newfile
sed -i 's/原字符串/替换字符串/g' filename > newfilei重定向时,newfile是空的

sed, a stream editor

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值