gpt4 book ai didi

linux - 使用 grep 计算出现次数

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:31:46 28 4
gpt4 key购买 nike

grep -o "$var"文件 | wc -l

当我用文本字符串而不是变量替换“$var”时它起作用。

我检查过“$var”是一个字符串。

grep -o "$var"文件 | wc -l

当我用文本字符串而不是变量替换“$var”时它起作用。

我检查过“$var”是一个字符串。

新:

您好,这是代码。list.txt 包含多行单词列表,每一行包含一个单词。source.txt 是一个单行文件,由多个字符组成,没有任何空格。

#!/bin/bash

for i in $(seq 1 100)

do
word=$(sed "$i"'q;d' list.txt)
#remove the new line character
word=${word//$'\r\n'/}


grep -o "$word" source.txt | wc -l >>output


done

示例列表.txt:

aa
bb
cc

示例 source.txt:

aaccddffzzaabbhh

最佳答案

您显示的内容应该按预期工作。它是如何失败的?

无论如何,计算另一个文件中每个单词列表出现次数的更好方法是:

#!/usr/bin/env bash

while read word
do
grep -oc "$word" source.txt >> output
done < <(sed 's/\r//' list.txt)

在这里,我使用 while 循环在删除 windows 样式的行结尾后读取文件。然后,我使用 grep 的 -c 选项来计算出现次数。在您的示例文件上运行时,会产生:

$ cat output 
1
1
1

要在一行中计算多次出现的次数,您可以试试这个:

while read word
do
export word;
perl -lne '@c=/$ENV{"word"}/g; $f=scalar @c; print $f if $f>0' source.txt
done < list.txt

关于linux - 使用 grep 计算出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26189686/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com