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:将字数添加到文件的每一行的主要内容,如果未能解决你的问题,请参考以下文章

将分隔符添加到 csv 文件 MATLAB 的每一行的末尾

如何将源文件名添加到 Spark 中的每一行?

用linux c语言编写 为一个文件里面的内容的每一行添加一个指定的字符

如何将 3 个图像添加到 UITableView 的每一行?

为 df 输出命令的每一行添加时间戳?

AG-GRID 无法将图标按钮添加到我的 ag-grid 中的 ag-grid 和多选复选框的每一行