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' 文件 > 输出文件

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

相关文章:

linux - 根据修改时间在 Linux 中查找文件

linux - 将文件名添加到制表符分隔文件中每一行开头的循环(从而生成一个新列))

Perl 三点运算符...示例

perl - 如何调试在另一个 perlscript 中使用的 perl 脚本?

perl - 在 perl 中从命令行创建哈希

javascript - 如何按日期计算对象数组中的出现次数

python - 使用 urllib2 和/或 wget 自动下载文件

bash - 输出 2 列

r - 计算单个列中值的连续出现

mysql - 基于可用性的查询的 SQL 连续出现