标题: [问题求助] [已解决]SED怎么删除整行? [打印本页]
作者: Death 时间: 2010-2-1 23:07 标题: [已解决]SED怎么删除整行?
比如
asfqfgag
qrasfgasf
123
sfsabgb
asfytjkyt
123
utogmbmty
删除"123"包括回车或换行符
谢谢那位高手指点.!
谢谢大家.
确实很强大.
[ 本帖最后由 Death 于 2010-2-2 14:58 编辑 ]
作者: tianya520feng 时间: 2010-2-2 09:09
额,我也是现学现卖,刚刚学习批处理,看到你这问题去搜了下sed的用法,下载了个sed.exe试了下。复制代码
这行代码可以满足你的要求,删除文本 a.txt 中的所有包括 123 字符串的行(包括回车和换行符),d在这里应该是del的意思,表示删除。
虽然你的问题解决掉了,可是我的问题来了。因为刚刚接触这个命令。我把sed.exe放到 C:\windows\system32中,然后运行- @echo off
- sed "/123/d" a.txt>b.txt
- exit
复制代码
用b.txt来保存结果,发现b.txt中被 “Invalid keyboard code specified”占了第一行,如下:
- Invalid keyboard code specified
- asfqfgag
- qrasfgasf
- sfsabgb
- asfytjkyt
- utogmbmty
复制代码
如果这样,在得到的结果中进行行操作的时候,又要在n行上进行 n+1 的操作,而且还要删除第一行的这个字符串数据,略有不便。
请问这是不是我下载的sed的版本问题?并且当我直接执行 sed "/123/d" a.txt 这行代码的时候,a.txt 文本中内容并没有发生任何变化……
请教大家是怎么使用这个sed结果的?额,要不我再去看看书去,呵呵。
[ 本帖最后由 tianya520feng 于 2010-2-2 09:30 编辑 ]
作者: inittab 时间: 2010-2-2 12:10
sed是个很强大的本本处理命令。它支持很复杂很强大的正则表达式。
它并不对源文件进行直接修改。处理结果需要通过重定向输出。楼上可能是sed版本的问题。可以通过 sed --help 查看一下,如果出现很大的字符。表明此sed 不适用于当前环境。换个版本可以解决。
作者: Batcher 时间: 2010-2-2 13:21 标题: 回复 2楼 的帖子
-i开关可以对原文件直接修改复制代码
作者: tianya520feng 时间: 2010-2-2 14:32
老大的 -i 开关果然有效!
我用了
-
- @echo off
- sed -i "/123/d" a.txt>b.txt
- exit
复制代码
得到的 a.txt 文件被正确修改了,可是得到的 b.txt文件却只有如下内容
- Invalid keyboard code specified
复制代码
头疼!
作者: Batcher 时间: 2010-2-2 16:43 标题: 回复 5楼 的帖子
-i已经修改了a.txt,你为何还要把结果重定向到b.txt呢?
作者: tianya520feng 时间: 2010-2-3 08:47
回复 6楼老大 的帖子
我不是为了解决这个问题而发问,我是想知道为什么在我输出到另一个文件时,为什么会出现那样一句话。对了,那个sed.exe是老大在论坛里提供下载的,不知道是不是我的系统问题?我的是 GHOST XP SP3
作者: inittab 时间: 2010-2-3 19:44
GNU sed 4.1.4 在我的机子上运行不兼容,中文会变乱码。好像是utf8编码的。
我用的super sed 3.62版正常。cmd下直接输出结果。也可以用在bat中 跟for配合使用,不过用-i好像出错。===============
刚才查了一下,原来用 sed -ig "/123/d" a.txt 就OK了。原来这么方便的功能一直没用上。
[ 本帖最后由 inittab 于 2010-2-3 19:54 编辑 ]
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |