【问题标题】:How to fetch last row nth column data from a .csv file using shell script如何使用 shell 脚本从 .csv 文件中获取最后一行第 n 列数据
【发布时间】:2017-02-11 05:03:36
【问题描述】:

我有一个 csv 文件,需要获取最后一行第 n 列的值。所以我有两个相同的查询

  1. 怎么做?
  2. 它会在内部循环遍历 csv 中的所有记录吗
    直到最后一行来获取数据,因为在这种情况下我认为我们会
    如果是大型 csv 文件,则会出现一些性能问题。

谢谢

【问题讨论】:

  • tail 可以让您排在最后一行。 awk 可以获得一列。例如Extract one column from CSV
  • tail -1 file.csv | awk -F, '{print $5}' 打印最后一行的第 5 列
  • awk -F, 'END{ print $N}' file.csv ,其中N 是根据要求的最后一行的任何列号。 @Inian 删除旧评论,因为它令人困惑。
  • 非常感谢您的帮助... tail -1 file.csv | awk -F, '{print $5}' => 这将打印第 5 列的值。但在我的情况下,我需要将它存储在一个变量中并且它不应该打印该值。只是想知道我们该怎么做。我现在有这样的东西-> tail -1 $FILE | awk -F, '{打印 $4}'
  • 所以基本上现在我有了这个 -> tail -1 $FILE | awk -F, '{print $4}' 我想在不打印的情况下存储输出。所以请建议我们如何做同样的事情。

标签: shell


【解决方案1】:

得知我在从 csv 文件中获取值时遇到了由于空格和其他双引号引起的问题。 通过 trans 和 awk 和 truncate 的组合解决了这个问题。

value=`tail -1 file.csv | awk -F',' '{print $5}' | tr -s ' ' '_' | tr -d '"'`
ech $value

【讨论】:

    【解决方案2】:

    你也可以使用 cut 命令来做这样的事情..

     >Wed Oct 05|01:47:01|gaurav@[STATION]:/root/ga/scripts/temp/tmp % cat c.csv |head -3
    1,2,3,4,5,6,7,8
    1,2,3,4,5,6,7,8
    1,2,3,4,5,6,7,8
     >Wed Oct 05|01:47:04|gaurav@[STATION]:/root/ga/scripts/temp/tmp % cat c.csv |cut -f7 -d","|head -3
    7
    7
    7
     >Wed Oct 05|01:47:06|gaurav@[STATION]:/root/ga/scripts/temp/tmp %
    

    【讨论】:

      猜你喜欢
      • 2019-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-24
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 2013-06-07
      相关资源
      最近更新 更多