Insert data in first column(if blank) from previous line first column

Dear Team

I need to insert field(which is need to taken from previous line's first field) in first column if its blank. I had tried using sed but not find the way. Detail input and output file as below.

Kindly help for same.

INPUT:

SCGR  SC  DEV            DEV1           NUMDEV  DCP  STATE
 488  0   RTPGD-3456     RBLT2-5665     31        1  WO
      1   RTPGD-3616     RBLT2-2849     31      287  WO

SCGR  SC  DEV            DEV1           NUMDEV  DCP  STATE
 490  0   RTPGD-672      RBLT2-5729     31        1  WO

SCGR  SC  DEV            DEV1           NUMDEV  DCP  STATE
 491  0   RTPGD-16544    RBLT2-5761     25        1  WO
      2   RTPGD-16576    RBLT2-7233     25      287  WO

SCGR  SC  DEV            DEV1           NUMDEV  DCP  STATE
 492  0   RTPGD-18624    RBLT2-5793     31        1  WO

OUTPUT REQUIRED:

SCGR  SC  DEV            DEV1           NUMDEV  DCP  STATE
 488  0   RTPGD-3456     RBLT2-5665     31        1  WO
 488  1   RTPGD-3616     RBLT2-2849     31      287  WO

SCGR  SC  DEV            DEV1           NUMDEV  DCP  STATE
 490  0   RTPGD-672      RBLT2-5729     31        1  WO

SCGR  SC  DEV            DEV1           NUMDEV  DCP  STATE
 491  0   RTPGD-16544    RBLT2-5761     25        1  WO
 491  2   RTPGD-16576    RBLT2-7233     25      287  WO

SCGR  SC  DEV            DEV1           NUMDEV  DCP  STATE
 492  0   RTPGD-18624    RBLT2-5793     31        1  WO

Regards
Jaydeep Sadaria

Bit messy but works for your input:

awk 'NF==6{gsub(/^ +/," "b"  ")};{b=$1}1' filename

Hi

gsub is not working in mine system. Kindly help.

 awk 'NF==6{sub(/^ +/," "b" ")};{b=$1}1' op.txt
awk: syntax error near line 1
awk: illegal statement near line 1
awk: syntax error near line 1
awk: bailing out near line 1

Regards
Jaydeep

Are you on Solaris?

Can you change awk to nawk?

EDIT: And please copy the command once more, I updated it with an extra space so the formatting is correct.

1 Like

Its working with nawk.
Thanks.

Regards
Jaydeep

---------- Post updated at 07:34 PM ---------- Previous update was at 07:17 PM ----------

Hi

I had one more same file in which I need to insert same in multiple line. Can u plz suggest me for same? ip/op is mention below.

INPUT:

SDIP     SNT          MS    CLREF  HP     LP       K  L  M  DIP
12ETM2   ETM2-12      MS-0         VC4-0  VC12-0   1  1  1  669RBL2
                        MS-1                VC12-1   2  1  1  670RBL2
                                          VC12-2   3  1  1  671RBL2
                                          VC12-3   1  2  1  672RBL2
                                          VC12-4   2  2  1  673RBL2

SDIP     SDIPOWNER
12ETM2   SDIPM2                                                  

SDIP     SNT          MS    CLREF  HP     LP       K  L  M  DIP
13ETM2   ETM2-12      MS-0         VC4-0  VC12-0   1  1  1  69RBL2
                      MS-1                VC12-1   2  1  1  60RBL2
                                          VC12-2   3  1  1  61RBL2
                                          VC12-3   1  2  1  62RBL2
                                          VC12-4   2  2  1  63RBL2

SDIP     SDIPOWNER
13ETM2   SDIPM2 

OUTPUT:

SDIP     SNT          MS    CLREF  HP     LP       K  L  M  DIP
12ETM2   ETM2-12      MS-0         VC4-0  VC12-0   1  1  1  669RBL2
12ETM2                MS-1                VC12-1   2  1  1  670RBL2
12ETM2                                    VC12-2   3  1  1  671RBL2
12ETM2                                    VC12-3   1  2  1  672RBL2
12ETM2                                    VC12-4   2  2  1  673RBL2

SDIP     SDIPOWNER
12ETM2   SDIPM2                                                  

SDIP     SNT          MS    CLREF  HP     LP       K  L  M  DIP
13ETM2   ETM2-12      MS-0         VC4-0  VC12-0   1  1  1  69RBL2
13ETM2                MS-1                VC12-1   2  1  1  60RBL2
13ETM2                                    VC12-2   3  1  1  61RBL2
13ETM2                                    VC12-3   1  2  1  62RBL2
13ETM2                                    VC12-4   2  2  1  63RBL2

SDIP     SDIPOWNER
13ETM2   SDIPM2   

Regards
Jaydeep Sadaria

$ awk 'NF!=9 && NF && !/SDIP/{$0=p FS $0}NF==9{p=$1}1' file
1 Like

p

Thanks Akshay...u had always been a helping hand......

Without changing the format of the file, overwriting the white space..

awk '{if(/^ /)$0=p substr($0,length(p)); else if(NF)p=$1}1' file

(provided field 1 is left-aligned, otherwise use a fixed length substring to assign to p)