linux vi sed 替换,vim和sed两种方式实现特殊字符(#和/)替换笔记

碰到一个问题需要把php.ini文件中#ROOT_PATH#全部替换为/home/work

cat php.ini

include_path = ".:#ROOT_PATH#/php/lib/php"

extension_dir="#ROOT_PATH#/php/ext"

首先想到的是用vim中的字符替换,操作起来有些无从下手。就用sed处理了两次

sed -i 's/#ROOT_PATH#/salmonl/g' php.ini

sed -i 's#salmonl#/home/work/g' php.ini

认为一条命令就应该能搞定,事后测试了下,用vim和sed其实都可以

一、vim替换

0、用vim打开文件

vim php.ini

1、用\转译

:1,$s/#root_path#/\/home\/work/g

2、用*来分隔

:1,$s*#ROOT_PATH#*/home/work*g

二、sed替换

0、用\转译

sed -i 's/#ROOT_PATH#/\/home\/work/g' php.ini

1、用*来分隔

sed -i 's*#ROOT_PATH#*/home/work*g' php.ini

2、如果是MAC OS下,sed -i后面需要多一个空参数, 不然执行报错sed: 1: “php.ini”: extra characters at the end of p command

sed -i '' 's*#ROOT_PATH#*/home/work*g' php.ini

三、总结

0、vim替换当前行

:s/word1/word2/g

1、vim替换指定行(n1,n2)之间的字符

:n1,n2s/word1/word2/g

2、vim替换第一行到最后一行之间的字符

:1,$s/word1/word2/g

3、vim和sed的替换模式基本一致, s后面跟的就是间隔符,一般都是/, 替换字符串中含有/的时候我们一般用#, 其实可以是任何字符,放在s后面就可以做为间隔符。【遇到#和/同时出现不要大惊小怪了】

4、替换文件路径的时候,建议用其他字符分隔,而不是用转译符\,转译符比较凌乱

四、思考

一开始用两次sed替换还有些小得意。后来想应该可以一次替换,才发现可以用#分隔,在进一步整理问题在发现s后面跟啥都是分隔符。

你说知道了这个有啥意义,其实没啥很大的意义,但是你有没有突然觉得这个软件设计很好玩,你有没有突然觉得这个世界好玩了一点。不管是软件世界,还是物理世界,都有这么多好玩的细节,所以,永远保持好奇心,去探索,去发现。

希望你永远像个孩子,笑靥如花,与君共勉。

参考:

《鸟哥Linux私房菜》基础学习篇

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值