附加到ant中文件中的每一行

时间:2013-04-16 16:38:20

标签: regex ant

我正在尝试在ant中进行一些小的文件操作。我检索了一个表空间列表,我想在其中添加ALTER TABLESPACE并附加NOT LOGGED,如下所示:

    <loadfile property="zos.prepend.tablespaces" srcFile="${basedir}/zos-tablespaces-DIRTY.txt">
      <filterchain>
        <!-- Order here is important -->
        <prefixlines prefix="ALTER TABLESPACE "/>
        <suffixlines suffix=" NOT LOGGED"/>
        <trim/>
        <replaceregex pattern=".*NAME.*|.*-----.*|.*record.*select.*|^ALTER TABLESPACE$" replace=""/>
        <trim/>
        <ignoreblank/>
      </filterchain>
    </loadfile>

    <echo file="${basedir}/zos-tablespaces-PREPEND.txt">
        ${zos.prepend.tablespaces}
    </echo>

当我这样做时,我得到前置确定,但附加似乎附加到下一行。任何想法如何做前缀和后缀?

1 个答案:

答案 0 :(得分:1)

我其实只是想通了。我的后缀是在我的输入的每一行的结尾处的CRLF之后添加,而不是之前。所以我只需要在后缀后清除CRLF。这是最终奏效的。现在我只需要让它更清洁

<filterchain>

  <tabstospaces/>
  <prefixlines prefix="ALTER TABLESPACE "/>
  <trim/>
  <replaceregex pattern=".*NAME.*|.*record.*select.*|.*-----.*|^ALTER TABLESPACE$" replace=""/>
  <suffixlines suffix=" NOT LOGGED @"/>
  <striplinebreaks/>
  <tokenfilter>
  <replacestring from="LOGGED @" to="LOGGED @${line.separator}"/>
  </tokenfilter>
  <tabstospaces/>
  <trim/>
  <replaceregex pattern="^NOT LOGGED @$" replace=""/>
  <tabstospaces/>
  <trim/>       
  <ignoreblank/>
  <fixcrlf eol="crlf" eof="add"/>

</filterchain>