Linux:将字数附加到文件的每一行

时间:2015-07-14 12:14:43

标签: linux bash shell csv append

目前很新的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

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

干杯!

3 个答案:

答案 0 :(得分:4)

简单awk解决方案:

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

答案 1 :(得分:0)

你可以用这个:

while read line; do

N=`echo $line | wc -w`;
echo $line", "$N;

done < inputfile.txt

答案 2 :(得分:0)

一个简单(但很可能很慢)的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