ant:用单个替换双空行

时间:2015-03-19 23:22:07

标签: ant replace

我正在尝试设置一个遍历每个文件的脚本,并用一个空行替换所有连续的空行。类似的东西:

aaa



bbb

转换为

aaa

bbb
到目前为止,我有:

<replace file="web.xml" value="">
            <replacefilter>
                <replacetoken>\n\n</replacetoken>
                <replacevalue>\n</replacevalue>
            </replacefilter>
        </replace>

但它并没有全部工作

到目前为止唯一的方法是:

<target name="-remove-blank">
        <replaceregexp file="${basedir}/temp/WEB-INF/web.xml"
               match="(\r?\n)\s*\r?\n" 
               flags="g"
               replace="\1" 
        />
    </target>

但这会删除所有空白行,而我需要它只在有2个或更多连续空行时删除

1 个答案:

答案 0 :(得分:0)

 <replaceregexp
  file="some.file"
  match="(${line.separator}){2}"
  replace="${line.separator}"
  flags="g"
 />

不起作用。
- 编辑 -
给定文件

line1

line2

line3

line4


line5



line6

并使用:

<replaceregexp
 file="foo.txt"
 match="^(${line.separator}){2,}"
 replace="${line.separator}"
 flags="mg"
/>

或在Windows上(更好地使用${line.separator}并让ant完成工作):

<replaceregexp
 file="foo.txt"
 match="^(\r\n){2,}"
 replace="\r\n"
 flags="mg"
/>

工作:

line1

line2

line3

line4

line5

line6

如果行包含空格,则必须使用:

match="^(\s*${line.separator}){2,}"

match="^(\s*\r\n){2,}"