【问题标题】:Include column with row number in multiple rows在多行中包含具有行号的列
【发布时间】:2015-02-11 11:07:14
【问题描述】:

我想在多行中包含额外的列数以及要增加的数量,例如:

db1              CIRBS                            500           10
db2              CITEMP                           500           7
db5              IN_DATA                          500           6
dbb              IN_INDEX                         500           3

最终视图:

1 db1              CIRBS                            500           10
2 db2              CITEMP                           500           7
3 db5              IN_DATA                          500           6
4 dbb              IN_INDEX                         500           3

【问题讨论】:

    标签: bash perl awk sed wc


    【解决方案1】:

    使用 awk:

    awk '{ print NR, $0 }' filename
    

    NR 是当前记录(即行)的编号,$0 是整行,所以这将在每行之前打印一个升序。

    【讨论】:

      【解决方案2】:

      有猫:

      cat -n infile
      

      使用 nl:

      nl -ba infile
      

      使用 grep:

      grep -n . infile
      

      使用 GNU sed:

      sed = infile | sed 'N; s/\n/ /'
      

      使用 GNU sed + xargs:

      sed = infile | xargs -n2
      

      使用 awk:

      awk '{ print NR, $0 }' infile
      

      或者:

      awk '$0 = NR OFS $0'   infile
      

      使用 perl:

      perl -pne 's/^/$. /' infile
      

      【讨论】:

        【解决方案3】:

        在 perl 中,您将使用 $. - 当前文件的当前行号。

        use strict;
        use warnings;
        use English;
        
        while ( <DATA> ) {
           # $. and $_ 
           print $INPUT_LINE_NUMBER . " " . $ARG;
        }
        
        __DATA__
        db1              CIRBS                            500           10
        db2              CITEMP                           500           7
        db5              IN_DATA                          500           6
        dbb              IN_INDEX                         500           3
        

        为了更简单的答案cat -n 也应该这样做。

          -n, --number
              number all output lines
        

        【讨论】:

        • 为什么不print "$. $_"?把它分成两行有什么好处?
        • 不是很多。如果可以避免的话,我只是讨厌使用$_。 (虽然,鉴于我使用的是$.,在这个例子中这有点争议)。
        • 但是您在代码中使用了$_。您只是没有明确使用它。那肯定更糟? :-)
        • 就个人而言 - 我会拒绝。我的意见 是,任何时候您实际使用$_,您都应该以不同的方式编写代码以获得显式命名变量。否则,您将继续看起来像线条噪音的“perl 风格”。这已经变成了一种习惯:)。但是同时使用$.和避开$_是不一致的,所以我已经修改了。
        • /me 看到 use English 并且不寒而栗:-/
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-20
        • 2013-02-27
        • 1970-01-01
        • 2020-07-06
        • 2018-11-17
        • 2021-03-18
        相关资源
        最近更新 更多