现在有一个情况是,我写了一个shell脚本,其中有些判断然后修改某个文件,最终是要启动这个文件夹;
当判断全是yes时,,会将文件中的内容全部修改,最终启动成功;
但当有判断为no时,文件中就会有部分内容无法修改,然后启动失败;
目前我在网上找了个方法,当我输入no时,就会将文件中的部分内容注释掉,但这个命令是vim命令,给我整不会了,过来请教各位大神;
(vim命令,在不启用编辑时输入,然后回车,将文件中的部分内容进行修改)
vim命令::2,5s/^/#/g(注意有英文冒号,此命令是指将这个文件中2到5行的内容注释掉);
现在我想通过一行shell命令(或多行都可以),将文件中的内容注释掉,并保存退出
感谢各位了!!!!
给你写个例子吧,你自己改一下。
假如原文件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
我都用python脚本写很少用shell脚本了
建议给出示例文件和想要的修改后的效果,最好也给出系统
– baogao_pro 3年前@baogao_pro: 您好,这是我在网上找的一个样例,但奈何看不太懂,还请大神指教
– 何以清欢渡 3年前https://www.jb51.cc/linux/393223.html
@何以清欢渡: 哪里看不懂?
– baogao_pro 3年前@何以清欢渡: 要看原文的解释 https://stackoverflow.com/questions/20614479/how-to-execute-the-vim-commands-through-shell-script
– baogao_pro 3年前@baogao_pro: 大佬您好,虽然文章给出两条命令,但其中,我并未看懂他是执行了哪些vim命令,并且这些命令是对哪个文件执行
– 何以清欢渡 3年前vim -T dumb --noplugin -n -es -S "commands.ex" "filespec"
vim -N -u NONE -n -c "set nomore" -S "commands.vim" "filespec"
@baogao_pro: 感谢大佬,我的问题解决了,在网上找到说是可以通过sed来解决,
– 何以清欢渡 3年前命令:sed '4,7s/^/#/' a.txt //将第4~7行注释掉(行首加#号)
但现在有个小问题,执行之后,会将文件内容全部输出一次,怎样可以让他不输出
@何以清欢渡: 看下面的回复
– baogao_pro 3年前@何以清欢渡: 如果问题解决了,别忘了给园豆,哈哈
– baogao_pro 3年前