Chinaunix

标题: sed可以实现修改后直接存档么? [打印本页]

作者: selina33    时间: 2006-05-23 16:53
标题: sed可以实现修改后直接存档么?
我看了wingger MM的文章。但还是找不到方法。
试了加-i参数,可能我的版本不支持。

如下
sed -e 's/abc/aaa/' b.sql
aaa
bbb

我想改后直接存档。如何做?
作者: honbj    时间: 2006-05-23 17:05
那就只能重定向了
作者: selina33    时间: 2006-05-23 17:07
重定向不能定向到自己。
作者: honbj    时间: 2006-05-23 17:08
gai改名
作者: selina33    时间: 2006-05-23 17:11
晕。我有大量的同类操作。不可能这样做的。
作者: honbj    时间: 2006-05-23 17:15
用ed吧
作者: honbj    时间: 2006-05-23 17:18
或者perl
作者: shexiaoyu    时间: 2006-05-23 21:46
标题: 用个临时文件中转一下,然后爱怎么就怎么
用个临时文件中转一下,然后爱怎么就怎么
作者: 兰花仙子    时间: 2006-05-23 22:24
原帖由 honbj 于 2006-5-23 17:18 发表
或者perl


Perl能么?偶怎么不知。
文件不是很多的话,直接用vi里的全局替换命令好了。
作者: 寂寞烈火    时间: 2006-05-23 23:40
awk
作者: honbj    时间: 2006-05-24 09:01
原帖由 兰花仙子 于 2006-5-23 22:24 发表
Perl能么?偶怎么不知。
文件不是很多的话,直接用vi里的全局替换命令好了。

  1. perl -pi -e 's/abc/aaa/g' filename
复制代码


参见 perl one line

http://www.unixguide.net/unix/perl_oneliners.shtml
作者: selina33    时间: 2006-05-24 12:07
太感谢了honbj

sed不行。我还去研究了awk。。
发现solaris中的awk没有gsub这个函数。还没有想出解决的办法。。。所以就直接就用你的方法了,省去了我不少的时间:)
作者: 網中人    时间: 2006-05-24 14:19
如果是 gnu 的 sed, 看看 -i 的選項....
作者: selina33    时间: 2006-05-25 09:53
试过sed的-i了。。说没有个参数
作者: tdyne    时间: 2006-07-04 15:07
标题: gawk如何做呢?
请问"寂寞烈火"兄和其他高人,用gawk如何实现楼主功能,多谢指教!
作者: luck_jogger    时间: 2006-07-04 15:22
用sed 的w选项,可以实现之。
sed 's/aaa/aa/g' w aaa.txt
好像是这么写的,可以试一下。
作者: tdyne    时间: 2006-07-04 15:51
标题: sed的w选项不行的
我试过了,用w选项不行的,把原文件都清空了,不支持-i选项的sed完成此功能看来有点难.
作者: hahaghost    时间: 2006-07-04 18:49
sed可以吧,理论上都可以
先输出到tmp然后再搞回来:)
例如sed xxx xxx.sql>tmp;mv tmp xxx.sql
这样不就回来了嘛
当然类似的方法还很多……
作者: flowingtree    时间: 2006-07-05 07:25
sed 高版的才有 -i 这个选项

[flowing@srt1 ~]$ uname -a
FreeBSD srt1.sunbo.com 6.1-RELEASE FreeBSD 6.1-RELEASE #0: Sun Jul  2 22:00:15 CST 2006     root@srt1.sunbo.com:/usr/src/sys/i386/compile/SUNBO.srt1  i386
[flowing@srt1 ~]$ sed -V
sed: illegal option -- V
usage: sed script [-Ealn] [-i extension] [file ...]
       sed [-Ealn] [-i extension] [-e script] ... [-f script_file] ... [file ...]
[flowing@srt1 ~]$


     -i extension
             Edit files in-place, saving backups with the specified extension.
             If a zero-length extension is given, no backup will be saved.  It
             is not recommended to give a zero-length extension when in-place
             editing files, as you risk corruption or partial content in situ-
             ations where disk space is exhausted, etc.




[flowing@sata flowing]$ sed -V
GNU sed version 4.0.7
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law

  -i[suffix], --in-place[=suffix]
                 edit files in place (makes backup if extension supplied)
作者: tdyne    时间: 2006-07-05 10:24
标题: hahaghost 兄请看清楼主的问题再回帖
需要直接存档,换句话说相当于直接编辑原文件,不使用临时文件。如果使用临时文件,就不用到这里发问啦
作者: scode    时间: 2006-07-05 10:43
利用管道输入,再重定向输出。
我试了下,可以。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2