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

[文本处理] [已解決] fr.exe如何利用正则表达式移除文件空白行?

本帖最后由 strong12345 于 2011-8-1 17:05 编辑

请问
如何利用正则表达式移除文件空白行
这是小弟目前代码,但是有些bug...
  1. fr.exe  文件.txt  -r:"[\r\n\r\n]+"  -t:"\r\n"
复制代码
有3个bug
1. 无法移除第一行的空白行
2. 无法移除最末行的空白行
3. 无法移除包含空白字符(\s)的空白行

请问该怎么修正代码,请知道的大大帮忙一下
感激不尽!


(ps.)我用firefox怎么没有话题分类的选项... 还要用IE TAB...
1

评分人数

    • tmplinshi: 感谢给帖子标题标注[已解决]字样PB + 2

回复 21# strong12345
  1. fr 文件.txt -r:"^(\t|\s)*\n" -t
复制代码

TOP

这2天再研究正则表达式...
小有心得
终于研究出用fr.exe去除空行的代码(包含\s \t 等空格行)
  1. ::去除所有空白行(包含 \s \t 等空白行)
  2. fr 文件.txt -r:"[\r\n]+(\s)+\n" -t:"\r\n"
  3. ::去除第一,最末空白行
  4. fr 文件.txt -r:"^\r\n|\r\n$" -t
复制代码
有个重点在于,有文字的行,尾端换行符为 \r\n
没有文字(只含 \s \t)的行,尾端换行符却只有 \n

TOP

是的,我用4.07成功了,感谢版主
可是,替换后的换行 变成仅是 \n ,不是一般notepad 认识的 \r\n
另外, ...
strong12345 发表于 2011-7-31 16:10



果然 - -|||,这个应该算是 bug 了吧,sed414 和 sed421 都没有这个情况。

可以这样:
  1. sed -i "/^[ \t]*$/d; s/$/\r/" a.txt
复制代码
sed414 是可以替换成功的,你之前因为没有加 -i 参数。

TOP

回复 17# strong12345
  1. sed "/^[ \t]*$/d" a.txt | more >b.txt
复制代码
这样应该不会有\n的问题了吧

TOP

回复 17# strong12345


4.2.1在使用-i选项的时候会自动生成一个备份文件,感觉不爽。

TOP

本帖最后由 strong12345 于 2011-7-31 16:18 编辑

是的,我用4.07成功了,感谢版主
可是,替换后的换行 变成仅是 \n ,不是一般notepad 认识的 \r\n
另外,最末行的空行,也无法替换,请问此点可改善吗 @@

另外想请问 gawk代码,个人目前比较想学gawk...
谢谢

另外我刚刚查了一下,sed 出4.2.1 单文件版本了
网站 http://gnuwin32.sourceforge.net/packages/sed.htm
似乎也没有单文件 =.= 还是要dll档

TOP

回复 13# strong12345


试试版主提供的4.0.7

TOP

回复  CUer
初步尝试似乎不行 =.=
是我的文本里有中文的原因吗?
strong12345 发表于 2011-7-31 11:25



加 -i 参数:
  1. sed -i "/^[ \t]*$/d" a.txt
复制代码

TOP

回复 13# strong12345


是版本问题。

TOP

请问是我的作法有误吗@@
我一般浆sed.exe放在 system32\ 下,方便修改
可是我在DOS视窗下,输入sed --version ,或是其他sed指令,都是出现一个不支援中文的dos窗口 ??
附上我测试的档案及图片...

附件過大,因此傳到網路空間(包含sed.exe 4.14)
测试档案

TOP

本帖最后由 tmplinshi 于 2011-7-31 14:50 编辑

回复 10# strong12345


强烈建议使用这个版本:

    GNU sed v4.0.7 单文件版(使用 -i 参数不生成备份文件)
    http://bathome.net/thread-13353-1-1.html

与“4.14 单文件版”相比,不但

  • 体积更小
  • 速度更快
  • 而且使用 -i 参数不加扩展名的时候,不会生成备份文件。


-i[扩展名], --in-place[=扩展名]
               直接修改文件(如果指定扩展名就备份文件)


很多版本,即使没有指定扩展名,仍然会备份文件。“GNU sed v4.0.7 单文件版”没有这个问题。

TOP

回复 10# strong12345
  1. sed --version
复制代码

TOP

本帖最后由 strong12345 于 2011-7-31 12:15 编辑

回复 8# CUer
我不知道怎么看他的版本耶= = (/? 无效...??)
我只知道他的md5是81cb44f6676039ed327f98e1e6966635
我下载新的sed看看好了

我比较过了.. 4.14 单文件版

TOP

最近想学习一些第3方的文本处理软件用法
感觉功能很强大
但不知道学什么好
gawk  sed   还是什么比较好 @@

TOP

返回列表