Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl脚本,用于计算文件中每行的control-A字符数_Perl - Fatal编程技术网

Perl脚本,用于计算文件中每行的control-A字符数

Perl脚本,用于计算文件中每行的control-A字符数,perl,Perl,我需要计算文件每行中控件A字符的数量,我完全被难倒了,因为我不知道控件A字符的正则表达式是什么。这似乎可行: #!/usr/bin/perl -n s/[^\001]//g; $count += length; END {print "$count\n"} 或者,对于每行的计数: #!/usr/bin/perl -n s/[^\001]//g; print length, "\n"; 试试这个 $_ = '^Axyz^Apqr'; $match= tr/^A/^A/; 将给予 $match

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

这似乎可行:

#!/usr/bin/perl -n
s/[^\001]//g;
$count += length;
END {print "$count\n"}
或者,对于每行的计数:

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

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

$match=2;

在Gvim中,可以通过按Ctrl+v,然后按Ctrl+A来插入控件A

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

正在计算^A的总出现次数:

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

(编辑:固定打字错误)

嗯,没有想到使用
tr

perl -ne '{print s/\cA//g, $/}'
s/to/from/g
返回字符串被替换的次数
tr/x/y/
返回替换的字符数。在这种情况下,
tr/x/y/
将起作用,但如果您查找的是字符串而不是单个字符,则会遇到麻烦


我最初认为
m/regex/g
可以工作,但结果是它只返回
1
0
。Drats.

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

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

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

除了在引号中使用字符本身之外,以下每一项都会生成一个由该字符组成的字符串:
“\cA”
“\001”
“\x01”
“\x{01}”
“\N{U+0001}”
chr(1)
pack('C',1)
列表上下文中的m/regex/g。或者更确切地说,计算它返回的匹配项。
perl -nE'say "$.: ", tr/\cA//' file

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