<div dir="ltr">Hi Orna,<br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jul 20, 2015 at 11:56 AM, Orna Agmon Ben-Yehuda <span dir="ltr"><<a href="mailto:ladypine@gmail.com" target="_blank">ladypine@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hello everyone,<div><br></div><div>I often have damaged text files (due to a lovely storage system). The files are of different formats, although I can usually assume they contain spaces. The files are structured as lines.</div><div><br></div><div>Every once in a while, the lovely destruction (ahm....storage) system inserts binary garbage to the file. I wish to fix the files by removing the cancer without leaving any leftovers. That is, I want to lose partial lines.</div><div><br></div><div>I tried using grep with all sorts of keys, but it did not do the trick.</div><div>strings catches too little - it leaves partial lines.</div><div>Is there an elegant  way to  do the trick line-wise?</div><div><br></div></div></blockquote><div><br></div><div>It would help to know exactly which lines you wish to eliminate. Otherwise, you can do various tasks like that using perl -lane (while possibly using the -i flag) E.g: (untested):<br><br></div><div>$ export THRESH=5<br></div><div>$ perl -lan -E 'print unless ((() = /([\x80-\xFF])/g) > $ENV{THRESH})' < existing-file.txt > new-file.txt<br><br></div><div>The "ruby" executable has similar flags (with the Ruby’s expression syntax naturally).<br><br></div><div>Hope it helps.<br><br></div><div>Regards,<br><br></div><div dir="ltr">— Shlomi Fish<br><br><br>-- <br>Chuck Norris helps the gods that help themselves.<br><br>Please reply to list if it's a mailing list post - <a href="http://shlom.in/reply" target="_blank">http://shlom.in/reply</a> .<br></div></div>
</div></div>