首页 新闻 会员 周边

如何通过shell脚本执行vim命令

0
悬赏园豆:200 [已解决问题] 解决于 2021-02-24 10:51

现在有一个情况是,我写了一个shell脚本,其中有些判断然后修改某个文件,最终是要启动这个文件夹;
当判断全是yes时,,会将文件中的内容全部修改,最终启动成功;
但当有判断为no时,文件中就会有部分内容无法修改,然后启动失败;

目前我在网上找了个方法,当我输入no时,就会将文件中的部分内容注释掉,但这个命令是vim命令,给我整不会了,过来请教各位大神;
(vim命令,在不启用编辑时输入,然后回车,将文件中的部分内容进行修改)

vim命令::2,5s/^/#/g(注意有英文冒号,此命令是指将这个文件中2到5行的内容注释掉);

现在我想通过一行shell命令(或多行都可以),将文件中的内容注释掉,并保存退出

感谢各位了!!!!

何以清欢渡的主页 何以清欢渡 | 初学一级 | 园豆:10
提问于:2021-02-23 17:56

建议给出示例文件和想要的修改后的效果,最好也给出系统

baogao_pro 3年前

@baogao_pro: 您好,这是我在网上找的一个样例,但奈何看不太懂,还请大神指教
https://www.jb51.cc/linux/393223.html

何以清欢渡 3年前

@何以清欢渡: 哪里看不懂?

baogao_pro 3年前

@baogao_pro: 大佬您好,虽然文章给出两条命令,但其中,我并未看懂他是执行了哪些vim命令,并且这些命令是对哪个文件执行
vim -T dumb --noplugin -n -es -S "commands.ex" "filespec"
vim -N -u NONE -n -c "set nomore" -S "commands.vim" "filespec"

何以清欢渡 3年前

@baogao_pro: 感谢大佬,我的问题解决了,在网上找到说是可以通过sed来解决,
命令:sed '4,7s/^/#/' a.txt //将第4~7行注释掉(行首加#号)
但现在有个小问题,执行之后,会将文件内容全部输出一次,怎样可以让他不输出

何以清欢渡 3年前

@何以清欢渡: 看下面的回复

baogao_pro 3年前

@何以清欢渡: 如果问题解决了,别忘了给园豆,哈哈

baogao_pro 3年前
< >
分享
最佳答案
0

给你写个例子吧,你自己改一下。

假如原文件test.txt是这样的:

1a
2b
3c
4d
5e
6f

现在要把第2到5行前面加个#注释符号,用sed命令:
sed '2,5 {s/^/#/}' test.txt > test_new.txt && mv test_new.txt test.txt

简单解释:在第2到5行,把该行的开头替换为#,保存到一个临时文件 test_new.txt 中,然后再把test_new.txt 重命名为 test.txt

修改之后的文件为:

1a
#2b
#3c
#4d
#5e
6f
收获园豆:200
baogao_pro | 小虾三级 |园豆:619 | 2021-02-24 10:33
其他回答(1)
-1

我都用python脚本写很少用shell脚本了

小小咸鱼YwY | 园豆:3210 (老鸟四级) | 2021-02-23 19:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册