<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Chan Chen Coding...

    Perl Print Duplicate Line

    # Find out duplicate line, if yes, print it out.
    AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY
    LC_MESSAGES
    AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
    AcceptEnv LC_IDENTIFICATION LC_ALL
     
    # Example of overriding settings on a per-user basis
    #Match User anoncvs
    # X11Forwarding no
    # AllowTcpForwarding no
    # ForceCommand cvs server

    AcceptEnv LC_IDENTIFICATION LC_ALL

    #! /usr/bin/perl
    use strict;

    open(FH, 'dupLine.sample');
    my %seen;
    while (<FH>) {
      $seen{$_}++;
    }
     
    while (my ($line$count) = each %seen) {
      print "$count: $line" if $count > 1;
    }


    Using the standard Perl shorthands:

    my %seen;
    while ( <> ) {
       
    print if $seen{$_}++;
    }

    As a "one-liner":

    perl -ne 'print if $seen{$_}++'

    More data? This prints <file name>:<line number>:<line>:

    perl -ne 'print ( $ARGV eq "-" ? "" : "$ARGV:" ), "$.:$_" if $seen{$_}++'

    Explanation on %seen:

    • %seen declares a hash. For each unique line in the input $seen{$_} is a scalar slot in the hash named by the the text of the line.
    • Using the postfix increment operator (x++) we take the value for our expression, remembering toincrement it after the expression. So, if we haven't "seen" the line $seen{$_} is undefined--but when forced into an numeric "context" like this, it's taken as 0--and false.
    • Then it's incremented to 1.

    So the first time we see a line, we take the undefined value which fails the if. It increments the count at the slot to 1. Thus, it is 1 for any future occurrences at which point it passes the if condition.

    Now as I said above, %seen declares a hash, but with strict turned off, any variable expression can be created on the spot. So the first time perl sees $seen{$_} it knows that I'm looking for %seen, it doesn't have it, so it creates it.

    An added neat thing about this is that at the end, if you care to use it, you have a count of how many times each line was repeated.



    -----------------------------------------------------
    Silence, the way to avoid many problems;
    Smile, the way to solve many problems;

    posted on 2012-04-26 11:01 Chan Chen 閱讀(295) 評論(0)  編輯  收藏 所屬分類: Linux

    主站蜘蛛池模板: 成全视频在线观看免费| 日韩免费电影网址| 精品国产人成亚洲区| 91精品国产免费久久久久久青草| 五月天网站亚洲小说| 免费国产成人午夜电影| www.999精品视频观看免费| 人妻丰满熟妇无码区免费 | 久久精品国产亚洲AV香蕉| 久久久久久精品免费免费自慰| 亚洲视频在线观看2018| 午夜亚洲国产理论秋霞| 亚洲精品蜜桃久久久久久| 四虎亚洲国产成人久久精品| 成熟女人特级毛片www免费| 99久9在线|免费| 美女被cao网站免费看在线看| 国产日本亚洲一区二区三区| 免费a级毛片无码av| 精品免费国产一区二区三区 | 久久九九AV免费精品| 最近的2019免费中文字幕| 九九九精品视频免费| 亚洲美女中文字幕| 国产精品免费视频网站| 国产婷婷成人久久Av免费高清| 亚洲色图激情文学| 亚洲人成网亚洲欧洲无码久久| 嫩草视频在线免费观看| 十八禁在线观看视频播放免费| 一本色道久久88亚洲精品综合| 亚洲精品乱码久久久久久久久久久久 | 国产亚洲成av人片在线观看| 无遮免费网站在线入口| 最近中文字幕免费mv在线视频| 水蜜桃视频在线观看免费| 猫咪免费人成网站在线观看入口| 亚洲视频一区在线| 亚洲日本国产精华液| 国产成人综合久久精品亚洲| 亚洲GV天堂无码男同在线观看|