LinuxSir.cn,穿越时空的Linuxsir!

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

想编个脚本,修改文件里的某一词

[复制链接]
发表于 2003-7-2 00:30:11 | 显示全部楼层 |阅读模式
想编个脚本,修改文件里的某一词
如把/etc/inittab的运行等级由5改为3
发表于 2003-7-2 00:40:59 | 显示全部楼层
用sed的s命令和临时文件吧~~
如:
cat text
abc,kklkl
sjl;djkl;slafd
jweriowoeriwer
ABC
sdjklfsl;dfjl;sjfdasfa
jweroweru
ERER
dljasl;df;asdf
wierowoperuowrweur
weruewoiruopwere
djlasjkldLEE;fjl;skaf,sdfaskldjfowier,werwejorweirererreer
we.
ABC
asjldfjljasldjflkajl;sfjdljalsdfjl;kajsdfl;j
ABC
0054305u3u45034

[javalee//home/javalee/myshell]cat text|sed 's/LEE/ABC/'>tmp;rm text;mv tmp text        #把红字的LEE换成ABC
[javalee//home/javalee/myshell]cat text
abc,kklkl
sjl;djkl;slafd
jweriowoeriwer
ABC
sdjklfsl;dfjl;sjfdasfa
jweroweru
ERER
dljasl;df;asdf
wierowoperuowrweur
weruewoiruopwere
djlasjkldABC;fjl;skaf,sdfaskldjfowier,werwejorweirererreer
we.
ABC
asjldfjljasldjflkajl;sfjdljalsdfjl;kajsdfl;j
ABC
0054305u3u45034

不过,为了修改一个单词而写个脚本,有些大题小作了吧~~,用vi也可以,但是我不会;)
 楼主| 发表于 2003-7-2 01:30:31 | 显示全部楼层
很好
但换成字符就不行了
还有你这样只能全换了。我要的是把换某一个。不用全部换完。
发表于 2003-7-2 01:35:40 | 显示全部楼层
但换成字符就不行了
还有你这样只能全换了。我要的是把换某一个。不用全部换完。
说具体些!;)
发表于 2003-7-2 13:54:23 | 显示全部楼层
有时可能有这样的需求:只是替换一定范围的字符串
如100---200行之间的
发表于 2003-7-2 14:04:11 | 显示全部楼层
有时可能有这样的需求:只是替换一定范围的字符串
如100---200行之间的
这也需要用sed来解决,如:
sed -n '100,200p' urfile
就是显示100行到200行之间的内容,接下来的操作可以再通过管道|来进行处理!
有关sed,awk,grep详细的介绍和实例,请参考:
http://www.linuxsir.cn/bbs/showthread.php?threadid=23617
发表于 2003-7-2 14:07:38 | 显示全部楼层
sed可以直接定义范围的
参考
http://www.grymoire.com/Unix/Sed.html#uh-28
发表于 2003-7-2 14:21:48 | 显示全部楼层
很好
但换成字符就不行了
还有你这样只能全换了。我要的是把换某一个。不用全部换完。
实际是一样的道理,只有你找到他的模式,即可!
cat /etc/inittab|sed 's/id:5/id:3/' >tmp;rm /etc/inittab;mv tmp /etc/inittab
对于单独字符型模式的替换,也可以用tr来解决!
发表于 2003-7-2 17:14:07 | 显示全部楼层
最初由 777 发表
很好
但换成字符就不行了
还有你这样只能全换了。我要的是把换某一个。不用全部换完。


实际上这种问题我觉得最好不用Shell了,因为已经超出Shell的范围,Shell的本意是将复杂的工作简单化,而这个例子却是刚好相反,它让简单的工作复杂化了,当然这只是个人意见。  
发表于 2003-7-3 10:39:16 | 显示全部楼层
就是,VI多简单,
vi /etc/inittab
/5
n几次
r3
:wq

还保证不出差.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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