Date: Sat, 07 Feb 2009 07:39:02 -0500 From: William Gordon Rutherdale <will.rutherdale@utoronto.ca> To: freebsd-questions@freebsd.org Subject: Re: insert new line in files Message-ID: <498D80E6.20702@utoronto.ca> In-Reply-To: <20090207100621.X49625@wojtek.tensor.gdynia.pl> References: <498CBEBE.7080702@gmail.com> <20090207100621.X49625@wojtek.tensor.gdynia.pl>
next in thread | previous in thread | raw e-mail | index | archive | help
Wojciech Puchar wrote: >> I want to insert a new line of text at a certain position in certain >> files recursively under a directory. More specifically, I want text >> like this: >> >> include('/usr/home/www/imp-sites/default_inventory.php'); > > write a script: > > #!/usr/local/bin/bash > (a=0 > while [ $a -lt 36 ];do > read line > echo "$line" > a=$[a+1] > done > echo "include('/usr/home/www/imp-sites/default_inventory.php');" > while read line;do > echo "$line" > done) <$1 >/tmp/$$ > mv -f /tmp/$$ $1 > > > run it over each file I would avoid this method because it is extremely inefficient, especially with large files. Shell is very slow for loops like that because it is purely interpretive. If you wrote the same thing in Perl it would run way faster just because it does a compile on load. (Besides, you still have to show the 'find' invocation to run it recursively, as requested.) Steve's sed solution is probably not bad as well. -Will
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?498D80E6.20702>