> From: peter reilly [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, November 12, 2003 2:56 AM
> To: Ant Users List
> Subject: Re: Remove a specific line from a file.
> 
> On Wednesday 12 November 2003 07:22, Stefan Bodewig wrote:
> > On Tue, 11 Nov 2003, Robert Priest <[EMAIL PROTECTED]> wrote:
> > > Can anyone tell me how to remove a specific line from a text file
> > > using ant.
> >
> > <replaceregexp> would probably work - simply replace the line your
> > don't want to see with nothing.
> >
> > Ant 1.6beta with a <linecontainsregexp> filterreader in <copy> would
> > work as well - you'd jave to craft a regexp that matched all your
> > lines except for the one you don't want to see in your file.
> 
> Ant 1.6beta also has a <scriptfilter> which allows you to write
> a filter as follows:
>     <concat>
>       This is a line
>       this is a bad line
>       This is a good line
>       <filterchain>
>         <scriptfilter language="beanshell">
>           if (self.getToken().indexOf("good") == -1) {
>              self.setToken(null);
>           }
>         </scriptfilter>
>       </filterchain>
>     </concat>
> 
> With java 1.4 one may use a regex:
> 
>         <scriptfilter language="beanshell">
>           if (!self.getToken().matches(".*This.*good.*line.*")) {
>               self.setToken(null);
>           }
>         </scriptfilter>

I've been using myself a homegrown <sed> task. Here's an example:

    <bm:sedEditorGroup id="pmodel - fix flex/bison">
      <delete  pattern="^# *line" />
      <delete  pattern="^# *[0-9]" />
      <replace pattern="yy" with="yy_pmodel_gram_" />
      <replace pattern="__EXTERN_C__" with="__cplusplus" />
    </bm:sedEditorGroup>

        <bm:sed from="pmodel/pmodel_gram_tab.c"
                  to="pmodel/pmodel_gram.y.cpp">
          <editorGroup refid="pmodel - fix flex/bison" />
        </bm:sed>
        <bm:sed from="pmodel/pmodel_gram_tab.h"
                  to="pmodel/pmodel_gram.y.h">
          <editorGroup refid="pmodel - fix flex/bison" />
        </bm:sed>

I find this more straightforward. --DD

PS: For info, here's the full context of its use:

    <ac:outofdate>
      <sourcefiles>
        <pathelement location="script/cgram.y" />
      </sourcefiles>
      <targetfiles>
        <pathelement location="script/cgram.y.cpp" />
        <pathelement location="script/cgram.y.h" />
      </targetfiles>
      <sequential>
        <echo>Bisoning script/cgram.y...</echo>
        <exec executable="${bison}" failonerror="true">
          <arg value="-vd" />
          <arg value="-o" />
          <arg file="script/cgram_tab.c" />
          <arg file="script/cgram.y" />
          <env key="BISON_SIMPLE" value="${tools.dir}/bin/bison.simple" />
        </exec>
        <bm:sed from="script/cgram_tab.c" to="script/cgram.y.cpp">
          <editorGroup refid="script - fix flex/bison" />
        </bm:sed>
        <bm:sed from="script/cgram_tab.h" to="script/cgram.y.h">
          <editorGroup refid="script - fix flex/bison" />
        </bm:sed>
        <delete file="script/cgram.out" />
        <delete file="script/cgram.output" />
        <delete file="script/cgram_tab.c" />
        <delete file="script/cgram_tab.h" />
      </sequential>
    </ac:outofdate>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to