in reply to Re^5: Delete a string possibly over two lines
in thread Delete a string possibly over two lines

Thanks that worked. If I may ask one final question. How do I run the script on an input file say infile and output to a file outfile (these file names could change from run to run) without appending the infile to the code you provided? Alternatively can I make the changes using a suitable command line that does what the script does instead of using the script?

Thanks.

  • Comment on Re^6: Delete a string possibly over two lines

Replies are listed 'Best First'.
Re^7: Delete a string possibly over two lines
by AnomalousMonk (Archbishop) on Feb 07, 2018 at 03:32 UTC

    I will take the liberty of answering your "final question" for tybalt89.

    How do I run the script on an input file say infile and output to a file outfile ... without appending the infile [data] to the code you provided?

    Questions of doing "real" file I/O are addressed by various links within these two posts, which have answers that use "integrated" data (update: or maybe "inline" data would be a better description) to support their examples and which the OPer also wanted to convert to general file I/O.

    ... can I make the changes using a suitable command line that does what the script does instead of using the script?

    That's two questions. Ok, try this. Caution: This is untested: Don't test it on any file you can't afford to say goodbye to. Assuming that you know the actual substitution you want and that this is intended for the Windows command line:
        perl -pe "BEGIN { $/ = '}' } s/.*\K\{\s*(?:Name|Program).*\}//s" infile > outfile
    See perlrun for Perl command line switches. Good luck.

    Update: Just tested it a little, and the BEGIN-block should be  BEGIN { $/ = '}' } (was  BEGIN { $\ = $/ = '}' } — fixed). But more testing is still needed!


    Give a man a fish:  <%-{-{-{-<

      Thank you. Your one line solution works fine.