How to parse this file?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • hervebags
    New Member
    • Oct 2011
    • 1

    How to parse this file?

    Hi,

    I have only been learning Perl for less than 2 weeks. I am a C++ programmer.
    I have attached a portion of the data below. The data is in file1.txt. I would like to move the data from file1.txt to file2.txt. But, I only want to keep the numbers.

    Eg: I want row 1 to look like this:

    1 1549367 11 8 3 11 0 -12.00 6.00 -0.25 -3.00 0.00 -1.67 -12.00 6.00 -0.64

    Instead of this:

    1 Chr26 1549367 11 GGGGGGGAAGA 8 3 Transition 11 0 -12.00 6.00 -0.25 -3.00 0.00 -1.67 -12.00 6.00 -0.64

    This is what I have done so far (file1.txt will be in @ARGV):
    Code:
    open FILE2, "+>file2.txt" or die "Cant not open file2.txt!";
    my $line;
    while($line = readline(ARGV))
    {
            print FILE2 $line;
    }
    The code above only copies content of file1.txt (ARGV) into file2.txt.
    I tried to use ‘seek’ and ‘tell()’ but, to solve my problem above but, I got confused :(

    I also tried this:

    Code:
    Open(FILE, “file1.txt”)
    @theFile = <FILE>;
    This puts every row in the array @the File. But, I can I now modify the elements of one row? (I’m still a novice Perl programmer)

    Thank you for your help

    /……………………………………… ……………………………………… ………../
    The file portion

    1 Chr26 1549367 11 GGGGGGGAAGA 8 3 Transition 11 0 -12.00 6.00 -0.25 -3.00 0.00 -1.67 -12.00 6.00 -0.64
    1 Chr26 1549501 15 ccCctctccccctCC 12 3 Transition 3 12 -17.00 6.00 0.50 1.00 6.00 2.67 -17.00 6.00 0.93
    1 Chr26 1549552 14 AagAAaaAAAagga 11 3 Transition 6 8 -31.00 6.00 -2.09 -12.00 3.00 -5.67 -31.00 6.00 -2.86
    1 Chr26 1549563 14 tAAaaAAAattat^F t 9 5 Transversion 5 9 -7.00 6.00 0.22 -64.00 4.00 -18.40 -64.00 6.00 -6.43
    1 Chr26 1549726 14 TtTtctTtTtTTTT 13 1 Transition 8 6 -3.00 6.00 1.92 6.00 6.00 6.00 -3.00 6.00 2.21
    2 Chr26 1549737 16 T+1Atttt+1aT+1A t+1aTt+1aT+1AT+ 1AT+1AT+1AtT+1A ^FA 15 11 Transversion 16 10 -64.00 6.00 -35.67 -64.00 6.00 -46.18 -64.00 6.00 -40.12
    2 Chr26 1549815 9 CtCTTTTTT 7 2 Transition 8 1 -3.00 6.00 -0.14 -9.00 0.00 -4.50 -9.00 6.00 -1.11
    1 Chr26 1549914 12 gGGGGGGGAGgg 11 1 Transition 9 3 -9.00 6.00 1.18 -4.00 -4.00 -4.00 -9.00 6.00 0.75
    1 Chr26 1550018
  • numberwhun
    Recognized Expert Moderator Specialist
    • May 2007
    • 3467

    #2
    So, what you basically want to do is take each line individually from @ARGV, and then parse each line, character by character, outputting all of each line, minus the letters.

    I don't have any working code at the moment, but that is my take on it.

    Regards,

    Jeff

    Comment

    • RonB
      Recognized Expert Contributor
      • Jun 2009
      • 589

      #3
      Jeff FYI, this question is cross posted on perlguru.

      Comment

      Working...