Bash 我如何获取一个字符串并按字母顺序排列,以及计算其中的字数?
基本上,我的问题是,我有一个由句点分隔的字符串,我希望能够在新行上打印每个单词,并在旁边显示它出现的次数 以下是我已经得到的: 编辑: 每个单词都在一个新行。Bash 我如何获取一个字符串并按字母顺序排列,以及计算其中的字数?,bash,Bash,基本上,我的问题是,我有一个由句点分隔的字符串,我希望能够在新行上打印每个单词,并在旁边显示它出现的次数 以下是我已经得到的: 编辑: 每个单词都在一个新行。uniq(1)可能可以做你想做的事情。例如: $ echo 'foo.bar.baz.bar.foo.box.foo' | tr '.' '\n' | sort | uniq -c 2 bar 1 baz 1 box 3 foo $ 请注意,uniq需要经过排序的输入才能正确计算出现次数。您
uniq(1)
可能可以做你想做的事情。例如:
$ echo 'foo.bar.baz.bar.foo.box.foo' | tr '.' '\n' | sort | uniq -c
2 bar
1 baz
1 box
3 foo
$
请注意,
uniq
需要经过排序的输入才能正确计算出现次数。您可以在awk中执行此操作。给定一个如下所示的文件:
this.is.a.test
and.this.is.test2
and.this.is.test3
以下awk将为您提供单词及其计数
awk 'BEGIN{
FS="."
}
{
for(i=1;i<=NF;i++){
a[$i]++
}
}
END{
for(word in a)print word, a[word]
}'
你对剧本有什么问题?一些示例输入的预期输出是什么,实际输出是什么?当我尝试运行此命令时,收到一个“未找到命令”错误。命令中不包含美元符号@nandhp只是使用美元符号来表示提示。复制美元符号后第一行的所有内容,但不包括美元符号。(此外,仅从第一行键入命令。答案中的所有其他内容都是输出的一部分。
this.is.a.test
and.this.is.test2
and.this.is.test3
awk 'BEGIN{
FS="."
}
{
for(i=1;i<=NF;i++){
a[$i]++
}
}
END{
for(word in a)print word, a[word]
}'
test 1
a 1
test2 1
test3 1
and 2
this 3
is 3