如何在bash脚本中打印指定文件中的单词数。例如,它将以
运行cat test | ./bash_script.sh
cat test
Hello World
This is a test
运行cat test | ./bash_script
的输出看起来像
Word count: 6.
我知道可以在没有脚本的情况下完成。我正在尝试将wc -w
实现为一个bash脚本,该脚本将计算上面显示的单词。任何帮助表示赞赏!谢谢
答案 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脚本将根据您的要求运行。下面是测试输出。
答案 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文件,那么它将加载到函数中...从那时起,您可以像您一样调用函数名称看到文件,它会给你数数