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)