Perl脚本用于计算文件中每行的控制字符数

时间:2011-06-23 21:48:46

标签: perl

我需要计算文件每行中控件A字符的数量而且我完全难倒,因为我不知道控件A字符的正则表达式是什么。

5 个答案:

答案 0 :(得分:5)

计算每行^ A的出现次数(作为perl one-liner):

perl -ne '{print tr/\cA//, $/}' file

计算^ A的总出现次数:

perl -ne '{$c += tr/\cA//}END{print $c, $/}' file

(编辑:修正错字)

答案 1 :(得分:3)

这似乎有效:

#!/usr/bin/perl -n
s/[^\001]//g;
$count += length;
END {print "$count\n"}

或者,对于每一行的计数:

#!/usr/bin/perl -n
s/[^\001]//g;
print length, "\n";

答案 2 :(得分:1)

试试这个

$_ = '^Axyz^Apqr';
$match= tr/^A/^A/;

将给出

$match=2;

在Gvim中,您可以通过按Ctrl + v然后按Ctrl + a

来插入控件A.

答案 3 :(得分:1)

嗯,没想到使用tr

perl -ne '{print s/\cA//g, $/}'

s/to/from/g返回替换字符串的次数。 tr/x/y/返回替换的字符数。在这种情况下,tr/x/y/会起作用,但是你正在寻找一个字符串,而不是一个字符,你就会遇到麻烦。

我最初虽然m/regex/g可行,但事实证明它只会返回10。 Drats。

答案 4 :(得分:1)

您正在尝试计算字节01的出现次数。它可以用tr ///和m //表示多种方式,包括\cA\x01

perl -nE'say "$.: ", tr/\cA//' file

perl -nE'say "$.: " . ( ()=/\cA/g )' file