Why after the while loop I am only getting last row value?

后端 未结 3 665
南旧
南旧 2021-01-23 22:42

This is the files I am reading,

#Log1
Time    Src_id  Des_id  Address
0   34  56  x9870
2   36  58  x9872
4   38  60  x9874
6   40  62  x9876
8   42  64  x9878
         


        
3条回答
  •  一整个雨季
    2021-01-23 23:27

    You can merge the log files using paste, and read the resulting merged file one line at a time. This is more elegant and saves RAM. Here is an example of a possible comparison of time1 and time2, writing STDOUT and STDERR into separate files. The example prints into STDOUT all the input fields if time1 < time2 and time1 < 4, otherwise prints a warning into STDERR:

    cat > log1.log < log2.log <out.tsv 2>out.log
    

    Output:

    % cat out.tsv
    0       34      56      x9870   1       35      57      x9871
    2       36      58      x9872   3       37      59      x9873
    % cat out.log
    not found: 4 5 at -e line 10, <> line 3.
    not found: 6 7 at -e line 10, <> line 4.
    not found: 8 9 at -e line 10, <> line 5.
    

    The Perl one-liner uses these command line flags:
    -e : Tells Perl to look for code in-line, instead of in a file.
    -n : Loop over the input one line at a time, assigning it to $_ by default.
    -l : Strip the input line separator ("\n" on *NIX by default) before executing the code in-line, and append it when printing.
    -a : Split $_ into array @F on whitespace or on the regex specified in -F option.

    SEE ALSO:
    perldoc perlrun: how to execute the Perl interpreter: command line switches

提交回复
热议问题