Hi Anirban

I haven't completely solved the problem - only addressing the DEV field,
but I hope this points you in the right direction!

cheers

Andrew

#!/usr/bin/env perl

use strict;

use warnings;



# NOTE This assumes the space aren't tabs and the columns are aligned


my $input = '

SCGR  SC  DEV            DEV1           NUMDEV  DCP  STATE  REASON

1      0                                 31      1

SCGR  SC  DEV            DEV1           NUMDEV  DCP  STATE  REASON

2      0                                 31      1

';


my @input_lines = split /\n/, $input;



foreach my $line (@input_lines) {

    next unless $line;

    my $dev = substr($line, 10, 15);

    $dev =~ s/\s*//g;

    unless ($dev) {

        $line =~ s/(..........)(.....)/$1UNDEF/;

    }

    print $line."\n";


}

On Thu, Apr 2, 2015 at 3:43 PM, Anirban Adhikary <anirban.adhik...@gmail.com
> wrote:

> Hi List
>
> I would like to process a file which has the following structure.
>
> SCGR  SC  DEV            DEV1           NUMDEV  DCP  STATE  REASON
>    1        0                                             31           1
>
> SCGR  SC  DEV            DEV1           NUMDEV  DCP  STATE  REASON
>    2        0                                             31           1
>
> SCGR  SC  DEV            DEV1           NUMDEV  DCP  STATE  REASON
>    3        0                                              31          1
>
> SCGR  SC  DEV            DEV1           NUMDEV  DCP  STATE  REASON
>    4        0                                              31          1
>
> Condition is if any field is empty (In this case DEV and DEV1)  those has
> to be replaced by the keyword "NULL". When I am trying to split the line
> based on whitespace
> @elements = split(/\s+/,$line);
> in $element[2] entire blank space is coming upto NUMDEV1. so while
> printing I am not getting the proper output.
>
> How to resolve this problem?
>
> Best Regards
> Anirban.
>



-- 
Andrew Solomon

Mentor@Geekuni http://geekuni.com/
http://www.linkedin.com/in/asolomon

Reply via email to