2013-04-16 62 views
0

我想在螞蟻做一些小的文件操作。我取回我想用ALTER TABLESPACE到前置和後置表空間的列表,沒有登錄,像這樣:追加到文件中的每一行螞蟻

<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> 

當我這樣做,我得到的預謀好的,但追加似乎追加到下一行。任何想法如何做前綴和後綴?

+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>