How awk will do that

--- INPUT FILE -----
server1
/filesystem1
/filesystem2
/filesystem3

server2
/filesystemA
/filesystem2

server3
/filesystem1
/filesystem8
/filesystem9
--- INPUT FILE ENDS --

--- REQUIRED OUTPUT FILE---
/filesystem1 server1
/filesystem2 server1
/filesystem3 server1

/filesystemA server2
/filesystem2 server2

/filesystem1 server3
/filesystem8 server3
/filesystem9 server3
--- REQUIRED OUTPUT FILE ENDS --

Keep in mind that, there are different number of filesystem lines under
each server (some have 2, some 3 and so on). Can someone suggest?

thanks
nasir [ Di, 19 Juli 2005 22:55 ] [ ID #884719 ]

Re: How awk will do that

nasir wrote:

> --- INPUT FILE -----
> server1
> /filesystem1
> /filesystem2
> /filesystem3
>
> server2
> /filesystemA
> /filesystem2
>
> server3
> /filesystem1
> /filesystem8
> /filesystem9
> --- INPUT FILE ENDS --
>
> --- REQUIRED OUTPUT FILE---
> /filesystem1 server1
> /filesystem2 server1
> /filesystem3 server1
>
> /filesystemA server2
> /filesystem2 server2
>
> /filesystem1 server3
> /filesystem8 server3
> /filesystem9 server3
> --- REQUIRED OUTPUT FILE ENDS --
>
> Keep in mind that, there are different number of filesystem lines under
> each server (some have 2, some 3 and so on). Can someone suggest?

already answered in comp.lang.awk

Ed.
Ed Morton [ Di, 19 Juli 2005 23:08 ] [ ID #884722 ]

Re: How awk will do that

Awk:

/^\// {print $0,s;next}
!NF
{s=$1}
William James [ Mi, 20 Juli 2005 00:01 ] [ ID #884726 ]

Re: How awk will do that

On 19 Jul 2005 13:55:19 -0700, nasir
<nasir.kamal [at] gmail.com> wrote:
> --- INPUT FILE -----
> server1
> /filesystem1
> /filesystem2
> /filesystem3
>
> server2
> /filesystemA
> /filesystem2
>
> server3
> /filesystem1
> /filesystem8
> /filesystem9
> --- INPUT FILE ENDS --
>
> --- REQUIRED OUTPUT FILE---
> /filesystem1 server1
> /filesystem2 server1
> /filesystem3 server1
>
> /filesystemA server2
> /filesystem2 server2
>
> /filesystem1 server3
> /filesystem8 server3
> /filesystem9 server3
> --- REQUIRED OUTPUT FILE ENDS --
>
> Keep in mind that, there are different number of filesystem lines under
> each server (some have 2, some 3 and so on). Can someone suggest?
>
> thanks
>
awk '!/^\//{servername=$0; next} {print $0,servername}' input > output


--
Tonight you will pay the wages of sin; Don't forget to leave a tip.
Bill Marcum [ Mi, 20 Juli 2005 00:05 ] [ ID #886408 ]

Re: How awk will do that

Bill Marcum wrote:

> awk '!/^\//{servername=$0; next} {print $0,servername}' input > output


awk '/^\//{print; next} {ORS=FS $1 RS}' input >output

Both of these solutions omit the empty lines, but that may
be unimportant.
William James [ Mi, 20 Juli 2005 06:03 ] [ ID #886418 ]

Re: How awk will do that

On 19 Jul 2005 15:01:12 -0700, William James wrote:
> Awk:
>
> /^\// {print $0,s;next}
> !NF
> {s=$1}

Awk! to you, too.
Just _what_ are you nattering on about?
Oh, I see the problem:
X-Trace: posting.google.com
drwxr-xr-x [ Sa, 23 Juli 2005 06:17 ] [ ID #891259 ]
Linux » comp.unix.shell » How awk will do that

Vorheriges Thema: [Bash] problem with script in sed ...
Nächstes Thema: sed and newline (x0a)