Date: Sun, 09 Nov 2008 00:02:11 +0200 From: Giorgos Keramidas <keramida@ceid.upatras.gr> To: bsd <bsd@todoo.biz> Cc: Liste FreeBSD <freebsd-questions@freebsd.org> Subject: Re: scripting text replacement Message-ID: <87skq1yizg.fsf@kobe.laptop> In-Reply-To: <4B1A9F30-B8BC-4C48-A85F-3697C6AB3B7B@todoo.biz> (bsd@todoo.biz's message of "Sat, 8 Nov 2008 19:43:52 %2B0100") References: <4B1A9F30-B8BC-4C48-A85F-3697C6AB3B7B@todoo.biz>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 8 Nov 2008 19:43:52 +0100, bsd <bsd@todoo.biz> wrote: > Sorry for this cross posting, but I can not find a good "bash" mailing > list=E2=80=A6 > I am certain FreeBSD gurus will provide me with a fast and reliable > answer to this little question. > > Here is the deal: > ----------------- > > I have a file containing a list of items like that: > > line1item1 line1item2 line1item3 > line2item1 line2item2 line2item3 > =E2=80=A6400 times > > I need to insert this into another text file using printf() items should > be converted into variable looping=E2=80=A6 like that: > > printf "Bla bla bla $1 bla bla $2 bla bla $3 bla bla $2" > > The main thing is that I can not get $1 $2 $3 to correspond to > line1item1 line1item2 line1item3 A little more detail about the "Bla bla" part may be important in our effort to help you effectively. What you seem to describe above may be trivial to do with awk(1): ,----------------------------------------------------------------------- | $ cat /tmp/inputfile | line1item1 line1item2 line1item3 | line2item1 line2item2 line2item3 | $ awk '{ | printf "Bla bla bla %s bla bla %s bla bla %s bla bla %s\n", | $1, $2, $3, $2; | }' /tmp/inputfile | Bla bla bla line1item1 bla bla line1item2 bla bla line1item3 bla bla line= 1item2 | Bla bla bla line2item1 bla bla line2item2 bla bla line2item3 bla bla line= 2item2 | $ `----------------------------------------------------------------------- or with a short script in sed(1) or Perl: ,----------------------------------------------------------------------- | $ perl \ | -pe 's/(\S+)\s+(\S+)\s+(\S+)/Bla bla bla $1 bla bla $2 bla bla $3 bla b= la $2/' \ | /tmp/inputfile | Bla bla bla line1item1 bla bla line1item2 bla bla line1item3 bla bla line= 1item2 | Bla bla bla line2item1 bla bla line2item2 bla bla line2item3 bla bla line= 2item2 | $ `----------------------------------------------------------------------- More complex substitutions can be scripted in almost any scripting language you prefer. HTH, Giorgos
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?87skq1yizg.fsf>