Perl脚本,用于计算文件中每行的control-A字符数
我需要计算文件每行中控件A字符的数量,我完全被难倒了,因为我不知道控件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
#!/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