我有一个如下所示的文件:(注意: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/