计算文件中的单词数,bash脚本

时间:2014-02-03 21:11:21

标签: linux bash

如何在bash脚本中打印指定文件中的单词数。例如,它将以

运行
cat test | ./bash_script.sh

cat test

Hello World
This is a test

运行cat test | ./bash_script的输出看起来像

Word count: 6. 

我知道可以在没有脚本的情况下完成。我正在尝试将wc -w实现为一个bash脚本,该脚本将计算上面显示的单词。任何帮助表示赞赏!谢谢

6 个答案:

答案 0 :(得分:3)

如果给出了输入流,如下所示:

while read -a words; do (( num += ${#words[@]} )); done
echo Word count: $num.

@FredrikPihl链接扩展了一条评论:这是从作为参数给出的每个文件中读取的,如果没有给出文件则从stdin读取:

for f in "${@:-/dev/stdin}"; do
    while read -a words; do (( num += ${#words[@]} )); done < "$f"
done
echo Word count: $num.

这应该更快:

for f in "${@:-/dev/stdin}"; do
    words=( $(< "$f") )
    (( num += ${#words[@]} ))
done
echo Word count: $num.

答案 1 :(得分:1)

纯粹的bash:

read -a arr -d $'\004'
echo ${#arr[@]}

答案 2 :(得分:1)

library(data.table)
dcast(setDT(df), name~number, value.var = c("job", "company"))

正如@keshlam在评论中指出的那样,可以通过从shell脚本执行#!/bin/bash word_count=$(wc -w) echo "Word count: $word_count." 来轻松完成此操作,我不知道它的用例是什么。

尽管如此,上面的shell脚本将根据您的要求运行。下面是测试输出。

enter image description here

答案 3 :(得分:0)

您可以将文件的内容扩展为参数,并回显脚本中的参数数量。

$#扩展到脚本参数的数量

#!/bin/bash

echo "Word count: $#."

然后执行:

./bash_script.sh $(cat file)

答案 4 :(得分:0)

试试这个:
wc -w *.md | grep total | awk '{print $1}'

答案 5 :(得分:-1)

我相信你需要的是一个可以添加到你的bashrc中的函数:

function script1() {  wc -w $1; }

script1 README.md 
335 README.md

您可以将该函数添加到.bash_rc文件中并在下一个控制台上调用它,或者如果您获取.bashrc文件,那么它将加载到函数中...从那时起,您可以像您一样调用函数名称看到文件,它会给你数数