bash - 计算每行出现的字符数

标签 bash perl find-occurrences

我有一个看起来像这样的文件:(注意:A*、B*、C* 是占位符)。该文件由 ; 分隔。

AAAA;BBBB;CCCCCCCC;DD;EEEEEEEE;FF;
AAA1;BBBBB;CCCC;DD;EEEEEEEE;FFFFF;
AAA3;BB;CCCC;DDDDDDDDD;EEEEEEE;FF;

我正在尝试编写一个小脚本来计算分隔符 ; 的出现次数如果小于或大于 5,则将所述行输出到文本文件。
delim=";"

while read line
do  
    n_of_occ=$(grep -o "$delim" <<< "$line" | wc -l)

    if [[ $n_of_occ < 5 ]] || [[ $n_of_occ > 5 ]]
    then
        echo $line >> outfile
    fi
done

出于某种原因,这似乎不起作用,我的输出是乱码。有人可以协助或提供不同的方法来解决这个问题吗?也许用 Perl 而不是 bash?

最佳答案

使用 awk 这很简单:
awk -F\; 'NF!=6' file > outfile

关于bash - 计算每行出现的字符数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37274638/

相关文章:

java - 按出现的降序显示单词

python - 如何使用shell命令将目录作为参数传递给python脚本?

bash - 自定义 cd 命令

Perl:读取字符串中双引号之间的内容

perl - 如何从 Perl 使用 Active Directory?

c++ - 出现次数上限[已关闭]

javascript - 提交按钮将值传递给数据库并显示值的出现次数(laravel)

linux - “rc = $$”是什么? ; cat File1>/proc/self/fd/2;在Linux Shell中执行“退出$$ r”命令?

eclipse - Git bash win32exception : Failed to write credentials

perl - 行为类似于 Class::Data::Inheritable 的 Moose 类属性