[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 309
  • Last Modified:

Join, Sequence Number, and Two Ouputs

You have an input file with over a million lines like so :

0998|1999|1000|ATL|SEA|H|USAIR|2725|3002|0845


The first ouput file:

Assigns a sequence number to each line that is unique, combines the first three fields into one, only uses the last two digits of field 2, defaults the ouput of 2 to 99 if is is blank, puts a "_" after field 2, and also prints out field 6.

For example:

the above line would be:

00000001|099899_1000|USAIR


The second output file assigns a sequence number if fields 4,5,6,7,8,9,10 are unique.

For example the ouput would be:

00000001|ATL|SEA|H|USAIR|2725|3002|0845


How would u write this in perl

Any help appreciated:

Thanks
0
tomatocans
Asked:
tomatocans
  • 3
  • 2
1 Solution
 
tomatocansAuthor Commented:
Adjusted points from 25 to 50
0
 
ozoCommented:
$sequence='0000000';
while( <> ){
  @field=split/\|/;
  print join'|',$sequence++,$field[0].substr($field[1]||99,-2)."_$field[2]","$field[6]\n";
}
0
 
PC_User321Commented:
First file (based on ozo's post):

$sequence='0000001';
while( <> ){
  unless (defined($CheckDup{$_})) {
    $CheckDup{$_} = 1;
    @field=split/\|/;
    print join'|',$sequence++,$field[0].substr($field[1]||99,-2)."_$field[2]","$field[6]\n";
  }
}

Second file:
$sequence='0000001';
while( <> ){
  $Line = $_;
  $Line =~ s/^(.*?\|){3}//;
  unless (defined($CheckDup{$Line})) {
    $CheckDup{$Line} = 1;
    print $sequence++ . "|$Line";
  }
}

0
Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
PC_User321Commented:
BTW tomatocans, many of your questions remain ungraded.
I suggest you go through all your questions and awards points to people who have given correct answers/comments, or if no one is correct, then delete the question or add more information.
0
 
PC_User321Commented:
My solutions can be streamlined slightly:

In each script the two lines in the form of
     unless (defined($CheckDup{$Line})) {
    $CheckDup{$Line} = 1;
   
can be replaced with
  unless (++$CheckDup{$Line} > 1) {
   
0
 
tomatocansAuthor Commented:
Thanks
0

Featured Post

[Webinar] Kill tickets & tabs using PowerShell

Are you tired of cycling through the same browser tabs everyday to close the same repetitive tickets? In this webinar JumpCloud will show how you can leverage RESTful APIs to build your own PowerShell modules to kill tickets & tabs using the PowerShell command Invoke-RestMethod.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now