Insert a text from a specific row into a specific column using SED or AWK

Hi,

I am having trouble converting a text file. I have been working for this whole day now, still i couldn't make it.

Here is how the text file looks:
_______________________________________________________

DEVICE STATUS INFORMATION FOR LOCATION 1:
OPER  STATES:  Disabled  E:Enabled   B:Busy
ADMIN STATES:  L:Locked    U:Unlocked  E:Equipped  S:Shutdown

                                              Last Transition Related
Device        State Reason                    dd/mm  hh:mm:ss Function
------------- ----- ------------------------- --------------- -------------
DRI 0 0 0     B-U   NO REASON                 05/07  02:28:27 RTF 0 0 0
DRI 0 1 0     B-U   NO REASON                 26/05  08:16:33 RTF 0 1 0
DRI 1 0 0     B-U   NO REASON                 05/07  02:28:27 RTF 1 0 0
DRI 1 1 0     B-U   NO REASON                 26/05  08:16:33 RTF 1 1 0
DRI 2 0 0     B-U   NO REASON                 05/07  02:28:27 RTF 2 0 0
DRI 2 1 0     B-U   NO REASON                 26/05  08:16:33 RTF 2 1 0


DEVICE STATUS INFORMATION FOR LOCATION 2:
OPER  STATES:  Disabled  E:Enabled   B:Busy
ADMIN STATES:  L:Locked    U:Unlocked  E:Equipped  S:Shutdown

                                              Last Transition Related
Device        State Reason                    dd/mm  hh:mm:ss Function
------------- ----- ------------------------- --------------- -------------
DRI 0 0 0     B-U   NO REASON                 05/07  02:29:16 RTF 0 0 0
DRI 0 1 0     B-U   NO REASON                 11/06  19:45:56 RTF 0 1 0
DRI 1 0 0     B-U   NO REASON                 05/07  02:29:16 RTF 1 0 0
DRI 1 1 0     B-U   NO REASON                 11/06  19:46:08 RTF 1 1 0
DRI 2 0 0     B-U   NO REASON                 05/07  02:29:16 RTF 2 0 0


DEVICE STATUS INFORMATION FOR LOCATION 3:
OPER  STATES:  Disabled  E:Enabled   B:Busy
ADMIN STATES:  L:Locked    U:Unlocked  E:Equipped  S:Shutdown

                                              Last Transition Related
Device        State Reason                    dd/mm  hh:mm:ss Function
------------- ----- ------------------------- --------------- -------------
DRI 0 0 0     B-U   NO REASON                 04/07  00:53:51 RTF 0 0 0
DRI 1 0 0     B-U   NO REASON                 04/07  00:53:51 RTF 1 0 0
DRI 1 1 0     B-U   NO REASON                 23/06  02:51:24 RTF 1 1 0
DRI 2 0 0     B-U   NO REASON                 04/07  00:53:51 RTF 2 0 0
DRI 2 1 0     B-U   NO REASON                 23/06  02:51:24 RTF 2 1 0

I want the file to look like this:

LOCATION 1 DRI 0 0 0     B-U   NO REASON                 05/07  02:28:27 RTF 0 0 0
LOCATION 1 DRI 0 1 0     B-U   NO REASON                 26/05  08:16:33 RTF 0 1 0
LOCATION 1 DRI 1 0 0     B-U   NO REASON                 05/07  02:28:27 RTF 1 0 0
LOCATION 1 DRI 1 1 0     B-U   NO REASON                 26/05  08:16:33 RTF 1 1 0
LOCATION 1 DRI 2 0 0     B-U   NO REASON                 05/07  02:28:27 RTF 2 0 0
LOCATION 1 DRI 2 1 0     B-U   NO REASON                 26/05  08:16:33 RTF 2 1 0
LOCATION 2 DRI 0 0 0     B-U   NO REASON                 05/07  02:29:16 RTF 0 0 0
LOCATION 2 DRI 0 1 0     B-U   NO REASON                 11/06  19:45:56 RTF 0 1 0
LOCATION 2 DRI 1 0 0     B-U   NO REASON                 05/07  02:29:16 RTF 1 0 0
LOCATION 2 DRI 1 1 0     B-U   NO REASON                 11/06  19:46:08 RTF 1 1 0
LOCATION 2 DRI 2 0 0     B-U   NO REASON                 05/07  02:29:16 RTF 2 0 0
LOCATION 3 DRI 0 0 0     B-U   NO REASON                 04/07  00:53:51 RTF 0 0 0
LOCATION 3 DRI 1 0 0     B-U   NO REASON                 04/07  00:53:51 RTF 1 0 0
LOCATION 3 DRI 1 1 0     B-U   NO REASON                 23/06  02:51:24 RTF 1 1 0
LOCATION 3 DRI 2 0 0     B-U   NO REASON                 04/07  00:53:51 RTF 2 0 0
LOCATION 3 DRI 2 1 0     B-U   NO REASON                 23/06  02:51:24 RTF 2 1 0

I would very much appreciate if some could help me out.

Ismail

Try:

awk '{ if($0 ~ /^DEVICE STATUS/) { str=$NF; sub(/:/," ",str); } if ( $0 ~ /^DRI/) { $0="LOCATION" str $0; print; } }'  file

Try:

awk '/LOCATION/ {
s="LOCATION "substr($NF,1,1);
}
/DRI/{
   print s" "$0;
}' file

To keep the forums high quality for all users, please take the time to format your posts correctly.

First of all, use Code Tags when you post any code or data samples so others can easily read your code. You can easily do this by highlighting your code and then clicking on the # in the editing menu. (You can also type code tags

```text
 and 
```

by hand.)

Second, avoid adding color or different fonts and font size to your posts. Selective use of color to highlight a single word or phrase can be useful at times, but using color, in general, makes the forums harder to read, especially bright colors like red.

Third, be careful when you cut-and-paste, edit any odd characters and make sure all links are working property.

Thank You.

The UNIX and Linux Forums

$
$ cat data.txt
DEVICE STATUS INFORMATION FOR LOCATION 1:
OPER  STATES:  Disabled  E:Enabled   B:Busy
ADMIN STATES:  L:Locked    U:Unlocked  E:Equipped  S:Shutdown
                                              Last Transition Related
Device        State Reason                    dd/mm  hh:mm:ss Function
------------- ----- ------------------------- --------------- -------------
DRI 0 0 0     B-U   NO REASON                 05/07  02:28:27 RTF 0 0 0
DRI 0 1 0     B-U   NO REASON                 26/05  08:16:33 RTF 0 1 0
DRI 1 0 0     B-U   NO REASON                 05/07  02:28:27 RTF 1 0 0
DRI 1 1 0     B-U   NO REASON                 26/05  08:16:33 RTF 1 1 0
DRI 2 0 0     B-U   NO REASON                 05/07  02:28:27 RTF 2 0 0
DRI 2 1 0     B-U   NO REASON                 26/05  08:16:33 RTF 2 1 0
 
DEVICE STATUS INFORMATION FOR LOCATION 2:
OPER  STATES:  Disabled  E:Enabled   B:Busy
ADMIN STATES:  L:Locked    U:Unlocked  E:Equipped  S:Shutdown
                                              Last Transition Related
Device        State Reason                    dd/mm  hh:mm:ss Function
------------- ----- ------------------------- --------------- -------------
DRI 0 0 0     B-U   NO REASON                 05/07  02:29:16 RTF 0 0 0
DRI 0 1 0     B-U   NO REASON                 11/06  19:45:56 RTF 0 1 0
DRI 1 0 0     B-U   NO REASON                 05/07  02:29:16 RTF 1 0 0
DRI 1 1 0     B-U   NO REASON                 11/06  19:46:08 RTF 1 1 0
DRI 2 0 0     B-U   NO REASON                 05/07  02:29:16 RTF 2 0 0
 
DEVICE STATUS INFORMATION FOR LOCATION 3:
OPER  STATES:  Disabled  E:Enabled   B:Busy
ADMIN STATES:  L:Locked    U:Unlocked  E:Equipped  S:Shutdown
                                              Last Transition Related
Device        State Reason                    dd/mm  hh:mm:ss Function
------------- ----- ------------------------- --------------- -------------
DRI 0 0 0     B-U   NO REASON                 04/07  00:53:51 RTF 0 0 0
DRI 1 0 0     B-U   NO REASON                 04/07  00:53:51 RTF 1 0 0
DRI 1 1 0     B-U   NO REASON                 23/06  02:51:24 RTF 1 1 0
DRI 2 0 0     B-U   NO REASON                 04/07  00:53:51 RTF 2 0 0
DRI 2 1 0     B-U   NO REASON                 23/06  02:51:24 RTF 2 1 0
$
$ perl -ne '/DEVICE STATUS INFORMATION FOR (.*):/ and $x=$1; /^DRI/ and print "$x $_"' data.txt
LOCATION 1 DRI 0 0 0     B-U   NO REASON                 05/07  02:28:27 RTF 0 0 0
LOCATION 1 DRI 0 1 0     B-U   NO REASON                 26/05  08:16:33 RTF 0 1 0
LOCATION 1 DRI 1 0 0     B-U   NO REASON                 05/07  02:28:27 RTF 1 0 0
LOCATION 1 DRI 1 1 0     B-U   NO REASON                 26/05  08:16:33 RTF 1 1 0
LOCATION 1 DRI 2 0 0     B-U   NO REASON                 05/07  02:28:27 RTF 2 0 0
LOCATION 1 DRI 2 1 0     B-U   NO REASON                 26/05  08:16:33 RTF 2 1 0
LOCATION 2 DRI 0 0 0     B-U   NO REASON                 05/07  02:29:16 RTF 0 0 0
LOCATION 2 DRI 0 1 0     B-U   NO REASON                 11/06  19:45:56 RTF 0 1 0
LOCATION 2 DRI 1 0 0     B-U   NO REASON                 05/07  02:29:16 RTF 1 0 0
LOCATION 2 DRI 1 1 0     B-U   NO REASON                 11/06  19:46:08 RTF 1 1 0
LOCATION 2 DRI 2 0 0     B-U   NO REASON                 05/07  02:29:16 RTF 2 0 0
LOCATION 3 DRI 0 0 0     B-U   NO REASON                 04/07  00:53:51 RTF 0 0 0
LOCATION 3 DRI 1 0 0     B-U   NO REASON                 04/07  00:53:51 RTF 1 0 0
LOCATION 3 DRI 1 1 0     B-U   NO REASON                 23/06  02:51:24 RTF 1 1 0
LOCATION 3 DRI 2 0 0     B-U   NO REASON                 04/07  00:53:51 RTF 2 0 0
LOCATION 3 DRI 2 1 0     B-U   NO REASON                 23/06  02:51:24 RTF 2 1 0
$
$

tyler_durden

thank you very much tyler_durden, rakeshawasthi and dennis.jacob

It was very helpful.

vgersh99- Sorry about that , Noted your points