是否有内置命令可以执行此操作,或者是否有人幸运地使用了执行此操作的脚本?
我想知道有多少记录(由特定 EOL 定义,例如“^%!”)有多少特定字符出现。 (按出现次数降序排列)
例如,对于这个示例文件:
jdk,|ljn^%!dk,|sn,|fgc^%!
ydfsvuyx^%!67ds5,|bvujhy,|s6d75
djh,|sudh^%!nhjf,|^%!fdiu^%!
建议输入:分隔符 EOL 和文件名作为参数。
bash/perl some_script_name ",|" "^%!" samplefile
期望的输出:
occs count
3 1
2 1
1 2
0 2
这是因为第 1 条记录有一个分隔符,第 2 条记录有 2,第 3 条记录有 0,第 4 条记录有 3,第 5 条记录有 1,第 6 条记录有 0。
如果您能让定界符和 EOL 参数接受十六进制输入(即 2C7C)或普通字符输入(即 ,|),则加分。
最佳答案
脚本:
#!/usr/bin/perl
use strict;
$/ = $ARGV[1];
open my $fh, '<', $ARGV[2] or die $!;
my @records = <$fh> and close $fh;
$/ = $ARGV[0];
my %counts;
$counts{(split $_)-1}++ for @records;
delete $counts{-1};
print "$_\t$counts{$_}\n" for (reverse sort keys %counts);
测试:
perl script.pl ',|' '^%!' samplefile
输出:
3 1
2 1
1 2
0 2
关于linux - unix - 文件中有多少条记录以及字符出现次数的分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10159207/