How to identify particular section using sed?

Hi, I have following data in a file. Not all but most of the lines start with letter 'T' has 8 SPACES from column 121 to 128 and I want to replace that portion with some dummy value. Is it possible through sed?

Input File:-

 
T1111111111111A       20140310000000005076358416369283  AAAAA                    BBBBBBB                2014010220140102        A0100        1              507635    P201401021325        1325        A     000003
S1111111111111A       XXQWERTY                        WIN2451 ABCDE RD TRLR 17        QWERTY                        WI53566    NA  515 PQRS AVE                  QWERTY                        WI53566    NA  7    
T2222222222222A       20140310000000005076358416369283  AAAAA                    BBBBBBB                2014010220140102        A0100        1              507635    P201401021325        1325        A     000003
S2222222222222A       XXQWERTY                        WIN2451 ABCDE RD TRLR 17        QWERTY                        WI53566    NA  515 PQRS AVE                  QWERTY                        WI53566    NA  7    
T3333333333333A       20140310000000005076358416369283  AAAAA                    BBBBBBB                2014010220140102        A0100        1              507635    P201401021325        1325        A     000003
S3333333333333A       XXQWERTY                        WIN2451 ABCDE RD TRLR 17        QWERTY                        WI53566    NA  515 PQRS AVE                  QWERTY                        WI53566    NA  7    
T4444444444444A       20140310000000005076358416369283  AAAAA                    BBBBBBB                2014010220140102        A0100        1              507635    P201401021325        1325        A     000003
S4444444444444A       XXQWERTY                        WIN2451 ABCDE RD TRLR 17        QWERTY                        WI53566    NA  515 PQRS AVE                  QWERTY                        WI53566    NA  7    
T5555555555555A       20140310000000005076358416369283  AAAAA                    BBBBBBB                2014010220140102        A0100        1              507635    P201401021325        1325        A     000003
S5555555555555A       XXQWERTY                        WIN2451 ABCDE RD TRLR 17        QWERTY                        WI53566    NA  515 PQRS AVE                  QWERTY                        WI53566    NA  7    
T6666666666666A       20140310000000005076358416369283  AAAAA                    BBBBBBB                2014010220140102        A0100        1              507635    P201401021325        1325        A     000003
S6666666666666A       XXQWERTY                        WIN2451 ABCDE RD TRLR 17        QWERTY                        WI53566    NA  515 PQRS AVE                  QWERTY                        WI53566    NA  7    
T7777777777777A       20140310000000005076358416369283  AAAAA                    BBBBBBB                2014010220140102        A0100        1              507635    P201401021325        1325        A     000003
S7777777777777A       XXQWERTY                        WIN2451 ABCDE RD TRLR 17        QWERTY                        WI53566    NA  515 PQRS AVE                  QWERTY                        WI53566    NA  7    
T8888888888888A       20140310000000005076358416369283  AAAAA                    BBBBBBB                2014010220140102        A0100        1              507635    P201401021325        1325        A     000003
S8888888888888A       XXQWERTY                        WIN2451 ABCDE RD TRLR 17        QWERTY                        WI53566    NA  515 PQRS AVE                  QWERTY                        WI53566    NA  7    
T9999999999999A       20140310000000005070898414104282  AAAA                     BBBBBB                 201401222014012220140205             1              507089    P201401221450        1450        A     000003
S9999999999999A       XXQWERTYUIO                     WI7909 W CONGRESS ST APT 1      QWERTYUIO                     WI53218    NA  3070 V DFGH ST STE 101        QWERTYUIO                     WI53210    NA  3    

Output file:-

T1111111111111A       20140310000000005076358416369283  AAAAA                    BBBBBBB                201401022014010220140331A0100        1              507635    P201401021325        1325        A     000003
S1111111111111A       XXQWERTY                        WIN2451 ABCDE RD TRLR 17        QWERTY                        WI53566    NA  515 PQRS AVE                  QWERTY                        WI53566    NA  7    
T2222222222222A       20140310000000005076358416369283  AAAAA                    BBBBBBB                201401022014010220140331A0100        1              507635    P201401021325        1325        A     000003
S2222222222222A       XXQWERTY                        WIN2451 ABCDE RD TRLR 17        QWERTY                        WI53566    NA  515 PQRS AVE                  QWERTY                        WI53566    NA  7    
T3333333333333A       20140310000000005076358416369283  AAAAA                    BBBBBBB                201401022014010220140331A0100        1              507635    P201401021325        1325        A     000003
S3333333333333A       XXQWERTY                        WIN2451 ABCDE RD TRLR 17        QWERTY                        WI53566    NA  515 PQRS AVE                  QWERTY                        WI53566    NA  7    
T4444444444444A       20140310000000005076358416369283  AAAAA                    BBBBBBB                201401022014010220140331A0100        1              507635    P201401021325        1325        A     000003
S4444444444444A       XXQWERTY                        WIN2451 ABCDE RD TRLR 17        QWERTY                        WI53566    NA  515 PQRS AVE                  QWERTY                        WI53566    NA  7    
T5555555555555A       20140310000000005076358416369283  AAAAA                    BBBBBBB                201401022014010220140331A0100        1              507635    P201401021325        1325        A     000003
S5555555555555A       XXQWERTY                        WIN2451 ABCDE RD TRLR 17        QWERTY                        WI53566    NA  515 PQRS AVE                  QWERTY                        WI53566    NA  7    
T6666666666666A       20140310000000005076358416369283  AAAAA                    BBBBBBB                201401022014010220140331A0100        1              507635    P201401021325        1325        A     000003
S6666666666666A       XXQWERTY                        WIN2451 ABCDE RD TRLR 17        QWERTY                        WI53566    NA  515 PQRS AVE                  QWERTY                        WI53566    NA  7    
T7777777777777A       20140310000000005076358416369283  AAAAA                    BBBBBBB                201401022014010220140331A0100        1              507635    P201401021325        1325        A     000003
S7777777777777A       XXQWERTY                        WIN2451 ABCDE RD TRLR 17        QWERTY                        WI53566    NA  515 PQRS AVE                  QWERTY                        WI53566    NA  7    
T8888888888888A       20140310000000005076358416369283  AAAAA                    BBBBBBB                201401022014010220140331A0100        1              507635    P201401021325        1325        A     000003
S8888888888888A       XXQWERTY                        WIN2451 ABCDE RD TRLR 17        QWERTY                        WI53566    NA  515 PQRS AVE                  QWERTY                        WI53566    NA  7    
T9999999999999A       20140310000000005070898414104282  AAAA                     BBBBBB                 201401222014012220140205             1              507089    P201401221450        1450        A     000003
S9999999999999A       XXQWERTYUIO                     WI7909 W CONGRESS ST APT 1      QWERTYUIO                     WI53218    NA  3070 V DFGH ST STE 101        QWERTYUIO                     WI53210    NA  3    

What makes you think it not possible with sed?

I am not sure how can we identify a particular portion of a line using sed and replace it. So I am not sure if it is possible with sed.

This is based on the pattern in the input file

sed '/^T/{s/\([0-9]\)        \([A-Z]\)/\120140331\2/}' infile

Based on the position in the line, if the line starts with "T" and there are 8 space from pos.121:

sed 's/^T\(.\{119\}\) \{8\}/T\120140331/' file
1 Like

It worked. Can you please explain why you used 119 and what curly '{' braces do?

Thanks!

T + 119 arbitrary characters = 120. The curly braces with the back slash ( \{ and \} are interval expressions, they repeat the part before it. So .\{119\} means 119 consecutive arbitrary characters.. and \{8\} means 8 spaces.

1 Like