Linux:将字数添加到文件的每一行
Posted
技术标签:
【中文标题】Linux:将字数添加到文件的每一行【英文标题】:Linux: Append Word Count to Each Line of a File 【发布时间】: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
我正在使用逗号分隔的值,所以如果有一种更快/更简单的方法可以通过使用逗号而不是项目来完成,那么这也可以。
干杯!
【问题讨论】:
【参考方案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
【讨论】:
以上是关于Linux:将字数添加到文件的每一行的主要内容,如果未能解决你的问题,请参考以下文章
用linux c语言编写 为一个文件里面的内容的每一行添加一个指定的字符