【问题标题】:How can I print a specific field from a specific line in a delimited type file如何从分隔类型文件中的特定行打印特定字段
【发布时间】:2012-07-22 10:57:06
【问题描述】:

我有一个排序的、分隔的类型文件,我想提取特定行中的特定字段。

这是我的输入文件:somefile.csv

efevfe,132143,27092011080210,howdy,hoodie
adfasdfs,14321,27092011081847,howdy,hoodie
gerg,7659876,27092011084604,howdy,hoodie
asdjkfhlsdf,7690876,27092011084688,howdy,hoodie
alfhlskjhdf,6548,27092011092413,howdy,hoodie
gerg,769,27092011092415,howdy,hoodie
badfa,124314,27092011092416,howdy,hoodie
gfevgreg,1213421,27092011155906,howdy,hoodie

我想提取27092011084688(来自第4行第3列的值)。

我使用了awk 'NR==4',但它给了我整个第 4 行。

【问题讨论】:

    标签: file bash shell csv awk


    【解决方案1】:

    相当简单:

    awk -F',' 'NR == 4 { print $3 }' somefile.csv
    

    使用,作为字段分隔符,取记录号4并打印somefile.csv中的字段3。

    【讨论】:

      【解决方案2】:
      $ sed -n "4p" somefile.csv | cut -d, -f3
      

      编辑

      这是什么?

      • -n正常输出圈数
      • 4p 打印第 4 行
      • -d, 使cut 使用, 作为分隔符
      • -f3 使 cut 打印第三个字段

      【讨论】:

        【解决方案3】:

        一种使用awk的方式:

        awk -F, 'NR==4 { print $3 }' file.txt
        

        【讨论】:

          【解决方案4】:

          使用以下内容:

          awk -F ',' 'NR==4 {print $3}'
          

          【讨论】:

            【解决方案5】:

            perl 替代在 csv 文件的第 4 行打印元素 3:

            perl -F, -lane 'print $F[2] if $. == 4' somefile.csv
            

            【讨论】:

              猜你喜欢
              • 2011-04-11
              • 1970-01-01
              • 1970-01-01
              • 2013-05-28
              • 1970-01-01
              • 1970-01-01
              • 2013-02-04
              • 2018-04-01
              • 1970-01-01
              相关资源
              最近更新 更多