LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1043|回复: 8

很急的一个问题,请问用脚本如何实现利用vi打开、修改并保存一个文件呢

[复制链接]
发表于 2007-4-11 15:20:55 | 显示全部楼层 |阅读模式
我需要利用脚本调用vi打开一个文件,做些修改,再保存

比如

#!bin/bash
vi abc     <==调用vi打开abc文件
:1,$s/xyz/zyx/g     <==将全篇的xyz替换为zyx
:wq     <==保存并退出

但发现实际运行此脚本只能打开abc文件,无法替换、修改和保存
提示大概是  sucn command not found

上面这些全是手工的方法,似乎机器不认如“:”的东西,无法进入命令行模式

我刚开始学shell编程,非常菜,望广位大侠不吝赐教,不胜感激!
发表于 2007-4-11 17:03:02 | 显示全部楼层
here document
回复 支持 反对

使用道具 举报

发表于 2007-4-11 17:54:46 | 显示全部楼层
楼主还是去读一读 sed 命令的介绍吧
回复 支持 反对

使用道具 举报

发表于 2007-4-12 11:14:38 | 显示全部楼层
[root@vm ~]# cat 2.sh
#!/bin/bash
vi 1.txt<<end
i
ok
esc
:wq
end

需要解决的问题是那个esc键 该怎么写 。。
回复 支持 反对

使用道具 举报

发表于 2007-4-12 11:54:40 | 显示全部楼层
按Ctrl-V, 再按ESC,得到一个^[这样的字符,就是了
回复 支持 反对

使用道具 举报

发表于 2007-4-12 12:12:54 | 显示全部楼层
刚才试了一下 成功了  谢啦
回复 支持 反对

使用道具 举报

发表于 2007-4-12 15:11:12 | 显示全部楼层
我没有试成功啊,我按ctrl-V就出来^V这样的符号,再按esc,没有反应阿。
回复 支持 反对

使用道具 举报

发表于 2007-4-13 14:58:41 | 显示全部楼层
第一次接触这个
呵呵
按照上面说的试了一下
运行的时候报错:
input is not a terminal

vim:Error reading input, exiting...
vim:preserving files...
vim:Finished.

请问是什么问题啊?
谢谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-13 15:01:43 | 显示全部楼层
在基础区发这贴时 wangyb 朋友告诉我可以这样, 我试了试还是蛮好使的, 在此感谢wangyb, 也多谢楼上各位朋友的帮忙

vim -c ':1,$s/abc/ABC/g' -c ':wq' x     <==其中 x 是文件名

or

sed -i 's/abc/ABC/g' x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表