【问题标题】:Linux: Append Word Count to Each Line of a FileLinux:将字数添加到文件的每一行
【发布时间】:2015-10-03 01:42:28
【问题描述】:

目前对 Linux 还很陌生,

我已经看到了一些简单的答案,将常量/不变的单词/组件附加到文件的末尾,例如shell script add suffix each line

但是,我想知道如何将 .csv 文件的每一行的字数附加到每一行的末尾,这样:

word1, word2, word3
foo1, foo2
bar1, bar2, bar3, bar4

变成:

word1, word2, word3, 3
foo1, foo2, 2
bar1, bar2, bar3, bar4, 4

我正在使用逗号分隔的值,所以如果有一种更快/更简单的方法可以通过使用逗号而不是项目来完成,那么这也可以。

干杯!

【问题讨论】:

    标签: linux bash shell csv append


    【解决方案1】:

    简单的awk解决方案:

    awk -F ',' '{print $0", "NF}' file.csv
    
    • -F 参数可用于指定字段分隔符,在您的情况下为 ,
    • $0 将包含整行
    • NF 是包含行中字段数的变量

    【讨论】:

      【解决方案2】:

      你可以用这个:

      while read line; do
      
      N=`echo $line | wc -w`;
      echo $line", "$N;
      
      done < inputfile.txt
      

      【讨论】:

        【解决方案3】:

        一个简单(但很可能很慢)的 bash 脚本就可以解决问题:

        #!/bin/bash
        
        newfile=$1.tmp
        
        cat $1 | while read l ; do
        
          echo -n $l \ >> $newfile
          echo $l | wc -w  >> $newfile
        
        done
        

        然后根据自己的喜好移动文件(使用tempfile 保存...) 文件:

        one,
        one, two,
        one, two, three,
        

        我明白了:

        one,  1
        one, two,  2
        one, two, three,  3
        

        【讨论】:

          猜你喜欢
          • 2012-01-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-02-05
          • 2021-01-22
          相关资源
          最近更新 更多