作业帮 > 英语 > 作业

如何用Replace Pioneer获得这种统计数据表?

来源:学生作业帮 编辑:百度作业网作业帮 分类:英语作业 时间:2024/05/16 07:39:58
如何用Replace Pioneer获得这种统计数据表?
有个TXT文本是以下内容:
段前1 111 11 11行
111 11行
1 1 111 11 11 111 111行
前11 111 111 111 11 1 1 11行
1111 1111行
11 111111111行
11111 11111 11111行
1111111111行
前11 1111 111 11 1111行
前11 11 111 11 1 1 1行
11111行
段前11111111行
111 11行
1111 11111 111 111行
111行
1111 11 11行
前1111 11111 1111 11 11行
111 111 11111 11 11行
11 1 111 11 11行
前111 111 1111 111 11行
1111 111 1111 111 111 1行
11 11 11111 1行
11 11 11 11 1 1行
段前……
我想针对这个文本获得一个统计数据表,总共涉及到六个数据(值都不超过99,所以限定用两位数表示):
数据A:统计每个“行”字出现在文本中的第几个“段”字后面
数据B:统计每个“行”字的前面的那个“段”字和后面的那个“段”字之间有几个“前”字
数据C:统计每个“行”字的前面的那个“前”字是前面的那个“段”字后面出现的第几个“前”字
数据D:统计每个“行”字的前面的那个“前”字和后面的那个“前”字之间有几个“行”字
数据E:统计每个“行”字是前面的那个“前”字后面出现的第几个“行”字
数据F:统计每个“行”字所在的行有多少个半角空格,其半角空格个数加上一即是数据F
统计数据表的格式为\A\B\C\D\E\F\,每行一个,所以按照以上原则统计出来应该是:
\01\04\01\03\01\04\
\01\04\01\03\02\02\
\01\04\01\03\03\07\
\01\04\02\05\01\08\
\01\04\02\05\02\02\
\01\04\02\05\03\02\
\01\04\02\05\04\03\
\01\04\02\05\05\01\
\01\04\03\01\01\05\
\01\04\04\02\01\07\
\01\04\04\02\02\01\
\02\03\01\05\01\01\
\02\03\01\05\02\02\
\02\03\01\05\03\04\
\02\03\01\05\04\01\
\02\03\01\05\05\03\
\02\03\02\03\01\05\
\02\03\02\03\02\05\
\02\03\02\03\03\05\
\02\03\03\04\01\05\
\02\03\03\04\02\06\
\02\03\03\04\03\04\
\02\03\03\04\04\06\
……
如何用Replace Pioneer获得这种统计数据表?
用Replace Pioneer按以下步骤即可得到格式\A\B\C\D\E\F\:
1.ctrl-o打开txt文本
2.ctrl-h打开replace窗口
* 在search for pattern输入"行"(不带双引号)
* 在replace with pattern输入sprintf("\\%02d\\%02d\\%02d\\%02d\\%02d\\%02d\\",$A,$B,$C,$D,$E,$F)\n即可
* 去掉print unmatched unit选项
点击advanced选项页
* 在run following at the beginning of replace输入$S=page(0);
* 在run following for each matched unit输入:
$S=~s/行/\x01/s;
$S=~/^(.*)\x01/s;
$A=count($1,'段');
$S=~/(([^段]*\x01)[^段]*)/s;
$B=count($1,'前');
$C=count($2,'前');
$S=~/(([^前]*\x01)[^前]*)/s;
$D=count($1,'[行\x02]')+1;
$E=count($2,'[行\x02]')+1;
$S=~/(([^\n]*\x01)[^\n]*)/s;
$F=count($1,' ')+1;
$S=~s/\x01/\x02/s;
3.点击replace,完成!