这两天遇到一个小麻烦,一个脚本中用的网址失效了(迁移到另外一个网址),而这个网址在脚本中被多次使用,所以如果修复这个脚本是一个问题。
(图源 :pixabay)
当然了,在Windows下,无论是记事本还是其它一些文本编辑工具都可以用搜索替换功能来解决,但是把Linux下的脚本拿到Windows下来修改,岂不是很没面子。
其实Linux是替换文件中的内容也很简单,我知道了无论是vi
还是sed
都完全可以胜任,我们来看看都如何操作。
使用vi
使用vi替换文件中所有符合的内容,写法如下:
:%s/foo/bar/g
如果只替换当前行中的内容,那么把%
去掉
如果只替换当前行中第一处对应内容,那么就把%
和g
都去掉。
如果替换指定范围的行中的内容,那么把%
换成{START},{END}
对应行号。
更多更详细的内容大家去参考手册吧,我就不啰嗦了。
这里唯一要注意的是,因为网址中会有/
,和替换表达式中的分隔符/
一样,所以我们需要使用转义字符\
对其进行转义。
好,下面我们来实际操作一下,假设有如下文本:
Reveal spoiler
我们需要将其所有https://aaa.com/aaa/
网址修改为https://bbb.com/bbb/
后边文件名不变。
经过分析,我们写出如下指令:
:%s/aaa.com\/aaa/bbb.com\/bbb/g
执行上述指令:
Reveal spoiler
使用sed
除了使用vi
我们还可以使用sed
替换文件中的内容,具体语法什么的我就不多说了,大家参考手册就好。
同样是针对上边的文本,我们可以使用如下指令来替换文本文件中的指定内容:
sed -i "s/aaa.com\/aaa/bbb.com\/bbb/g" test.txt
试了一下,用手工耿常说的一句话:“非常地好用!”
(图源 :pixabay)
有了上述基础,我遇到的问题就不算问题了,无论是使用vi
撸起袖子直接干还是使用sed
都能完美地解决我的问题。不用再复制到Windows下来搞啦。
当然了,搞之前,备份一下还是一个好习惯,以免把内容搞坏了,再搞不回来,就热闹啦。
O哥,你这级别已经81了
最高级别会是100吗?
越往后边升级越难哦
我要努力进入70,努力
Good explanation@oflyhigh
Thank you.