sed命令

  最近换了工作,因为新进公司,工作量比较饱和,学的东西也很多,少有像以前很多的时间学习总结.最近才发现好久没有更新博客,好久没有写收获了,我是简单的程序员,只会记录一些简单的知识点,零零碎碎,但是当某天翻阅起来,也会温故而知新.

    linux命令,我用的最多的是grep,一直知道有linux命令中有三剑客grep,sed,awk.我经常使用的grep命令有

    

ps -ef|grep nginx  //查看nginx进程是否还开着的

php -m |grep swoole   //查看PHP是否安装了swoole扩展

 

最近因为工作中要批量替换文件中的字符串 又学到了sed命令,不得不说 用了sed命令后,才发现很强大,比如 有A1,A2,A3,A4........

An个文件,里面都包含 name=hello world ,现在想要替换每个文件中的name=hello world 如何操作??

命令行如下

sed -i "s/name=hello[]world/this is new string/g" `grep "name=hello world" ./ -rl`

 

sed -i 其中 sed命令中 -i表示修改
/s  表示替换
name=hello[]world 表示要查找的字符串
this is new string 表示要替换的新字符串
/g"  表示一个文件中的全部 
`grep "name=hello world" ./ -rl`  grep是查找命令, r表示递归 l表示列出  ./表示要查找的目录路径


注意替换的时候若是有 其他特殊字符 记得转义

 

可是在mac下命令并未执行成功,经过查找资料,得知是mac命令与linux下命令不一样

 

那么解决办法就是可以在linux下执行相关的命令即可

 

sed常规用法(即在Linux下运行的方式):

sed -i 'xxx' file

对file文件执行文本替换,具体替换规则根据xxx定义。

但是在Mac系统中运行该指令会报错,原因在于Mac系统中sed指令-i后面需要带一个字符串,该字符串的含义是连接原文件名生成一个新的文件,该文件的内容为文本修改之前的内容。比如

sed -i 'back' 's/str=.*/str="dd"/g' file

执行之后会生成一个新的文件:fileback,文本内容为file修改之前的内容。

如果不想生成这个备份文件,可以把字串定义为空字串,比如

sed -i '' 's/str=.*/str="dd"/g' file

但是不能省略。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芝麻开门2015

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值