[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] !!急救!!使用sed进行文本格式化的问题,请大侠指教!

!!急救!!

使用sed进行文本格式化的问题,本意是将多个空格整理为1个空格,但是在对原始文件sed_before.txt执行sed时定住了,查看结果文件sed_after.txt,发现在120行处不动了,使用set list命令也没看出来什么特别的地方,求助坛子里的各位大侠,这是什么原因?如何解决?

原始文件:sed_before.txt    [attach]9851[/attach]
执行命令:sed 's/[ ][ ]*/ /g'  sed_before.txt > sed_after.txt[attach]9851[/attach]
结果文件:sed_after.txt    [attach]9852[/attach]
1

评分人数

    • pcl_test: 勿发笼统无意义的标题PB -6

Windows里面需要使用双引号
  1. sed -r "s/ +/ /g"  sed_before.txt > sed_after.txt
复制代码
如果还是有问题,换个sed版本试试:
http://www.bathome.net/s/tool/index.html?key=sed
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

我是在linux上运行sed的,版本为sed-4.1.5-5.fc6

回复 2# gawk

TOP

本帖最后由 gawk 于 2016-5-31 16:01 编辑

回复 3# beber


如果你的文件是从Windows直接复制到Linux的,由于两种系统文件格式不一样,会导致sed处理异常。
Windows文本行尾是 CR LF
Linux文本行尾是 LF
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

你可以先转换一下文件格式,然后再做处理:
  1. sed 's/\r//g'  sed_before.txt > sed_tmp.txt
  2. sed -r 's/ +/ /g'  sed_tmp.txt > sed_after.txt
复制代码
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

回复 4# gawk


    啊?啊?

TOP

源文件就在执行sed的机器上,是linux系统,所以不存在拷贝时特殊字符的问题。

回复 4# gawk

TOP

试过了,第1个命令正常执行,第2个命令还是卡住。

回复 5# gawk

TOP

回复 7# beber


    你可以 cat -A sed_before.txt 看看文件行尾是什么符号,我这里用 CentOS 6.7 测试没有发现问题。
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

行结尾都是 ^M$

回复 9# gawk

TOP

回复 10# beber


    这说明它是Windows格式的文本
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

如果你的Linux里面有dos2unix命令,可以先用它转换一下文本格式:
  1. dos2unix sed_before.txt
复制代码
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

返回列表