我正在尝试设置一个遍历每个文件的脚本,并用一个空行替换所有连续的空行。类似的东西:
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个或更多连续空行时删除
答案 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,}"