支付宝面试的时候,anysql 问了个问题,怎样在一个文本中对一个单词进行替换,当时没答上来。当时一直想着通过一个特定的命令解决,后来回去想了想,其实可以用sed 和vi 实现。
1.问题的分析
一个单词比如,longxibendi 在一行中的位置 有三:
a. 在行开头
b. 在行中间
c. 在行末尾
分别对应 下面三种模式
^longxibendi 后 加空格
longxibendi 后 加空格
longxibendi$
2.解决方法一:
比如替换 readme.txt文档中的 longxibendi 单词,替换成 lxbd
a. 查看readme.txt
b. 执行命令
c. 解释,sed 只是把执行后的文本输出了,但原文本readme.txt还没有变,所以,最好自己再重定向输出到一个文本,然后用mv命令更改文件名,覆盖掉原文件名即可。所以可以写成一个脚本如下:
3.解决方法二:
用vim解决
只需要在命令模式输入
:%s/^longxibendi /lxbd /g 回车
:%s/ longxibendi / lxbd /g 回车
:%s/ longxibendi$/ lxbd/g 回车
声明:本文档可以随意更改,但必须署名原作者
作者:凤凰舞者 qq:578989855