Chinaunix

标题: sed现在是不是改善了对于win文本一定的友好性? [打印本页]

作者: hanksuper    时间: 2008-07-06 23:44
标题: sed现在是不是改善了对于win文本一定的友好性?
完成下面的win文本处理:
例如
86544893776979566517279662326714810338643913751865<CR><LF>
94673002443450054499539974237232871249483470604406<CR><LF>

目的是要把上两行变为一行:
sed 'N;s/\n//'  testfile

就可以实现变为一行以<LF>结束,不用处理<CR>了吗?
猜想是不是sed先会处理行输入时 <CR><LF>就自动变为<LF>等于是来个预处理了,
试验了下   sed  ''   testfile newfile   发现打开newfile真的是原来的<CR><LF>变为<LF>了,证明确实有这层预处理

以上理解有问题吗?主要是看文档没看到关于这个事情

谢谢
作者: __lxmxn__    时间: 2008-07-07 01:50
sed 最先是在*nix下面使用的,所以处理完之后默认的行结尾就是<LF>,如果你需要保持<CR><LF>,可以再后面加个 | more 。
作者: walkerxk    时间: 2008-07-07 01:58
原帖由 __lxmxn__ 于 2008-7-7 01:50 发表
sed 最先是在*nix下面使用的,所以处理完之后默认的行结尾就是,如果你需要保持,可以再后面加个 | more 。

我这加more也没用:echo -e "a\r\nb"|sed 's/a/c/'|more|xxd
作者: walkerxk    时间: 2008-07-07 02:02
我在想是不是和\r是回车有关:
bash-3.2$ echo -e "abc\rb"
bbc
作者: __lxmxn__    时间: 2008-07-07 02:03
原帖由 walkerxk 于 2008-7-7 01:58 发表

我这加more也没用:echo -e "a\r\nb"|sed 's/a/c/'|more|xxd

我说的是win下面,不是*nix...
作者: walkerxk    时间: 2008-07-07 02:13
我用的就是win,cygwin的。
作者: __lxmxn__    时间: 2008-07-07 02:15
原帖由 walkerxk 于 2008-7-7 02:13 发表
我用的就是win,cygwin的。


Cygwin 不也是模拟 *nix 的么?

你在win的CMD下试试就知道了。
作者: walkerxk    时间: 2008-07-07 02:18
cmd没有sed的吧,我的执行结果还是一样,难道要用windows版本的sed?
D:\other\cygwin\bin>xxd a.log
0000000: 610d 0a62                                a..b

D:\other\cygwin\bin>cat a.log|sed 's/a/c/'|more|xxd
0000000: 630a 62                                  c.b

D:\other\cygwin\bin>
作者: walkerxk    时间: 2008-07-07 02:19
好了,用windows下的more就可以了:
D:\other\cygwin\bin>cat a.log|sed 's/a/c/'|c:\WINDOWS\system32\more.com|xxd
0000000: 630d 0a62 0d0a                           c..b..
真是麻烦。
作者: __lxmxn__    时间: 2008-07-07 02:38
不是用windows版本的sed,而是用windows版本的 more ...  ^_^
作者: 可可熊    时间: 2008-07-07 11:33
原帖由 walkerxk 于 2008-7-7 02:18 发表
cmd没有sed的吧,我的执行结果还是一样,难道要用windows版本的sed?
D:\other\cygwin\bin>xxd a.log
0000000: 610d 0a62                                a..b

D:\other\cygwin\bin>cat a.log|sed 's/a/c ...



怎么你用Win?
作者: hanksuper    时间: 2008-07-07 11:42
原帖由 可可熊 于 2008-7-7 11:33 发表



怎么你用Win?

不是,别人让我帮处理一个文本,但是我发现是win格式的文本,我是在*nix上完成上面的操作的
作者: blackold    时间: 2008-07-07 11:45
标题: 回复 #12 hanksuper 的帖子
简单的方法就将输出文件转换为dos格式了,也可以修改你的sed命令达到同样目的。
作者: 可可熊    时间: 2008-07-07 12:05
原帖由 hanksuper 于 2008-7-7 11:42 发表

不是,别人让我帮处理一个文本,但是我发现是win格式的文本,我是在*nix上完成上面的操作的


我是问walkerxk,




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