我对“获胜”的 60 张游戏卡进行了采样,例如这个并提取卡名字和数数并将其格式化以供某些软件使用。输出格式是:
.<ID><选项卡>数数<选项卡>姓名
步骤1
我从该集的文本版本开始,使用关联页面上提供(旁边打印)并保留数据(用空格分隔的两列),删除餐边柜牌。
第2步
对于每个卡名,我都会搜索本地list
文件,其中包含以分号分隔的卡属性列表,并匹配第二个字段上的卡名称以提取第一个字段,即身份证号对于相应的卡(此处缩短了行数,因为只有第一个字段很重要):
ID;Full Name;...
0;Air Elemental;1;Air Elemental;0800h;;;;;;;
1;Ancestral Recall;1;Ancestral Recall;0800h;;;;;;;;
2;Animate Artifact;1;Animate Artifact;0800h;;;;;;;
...
10780;Jace, the Mind Sculptor;1;Jace, the Mind Sculptor;0008h;;;;;;;;
10871;Aura Finesse;0;Aura Finesse;0008h;;;;;;;
...然后我为每一行添加前缀步骤1和。ID,确保 3 列用表格分隔。决赛输出文件看起来像这样(我不关心标题部分):
;MY1 - Shardless BUG - #1
;
;User
;User E-Mail
;28/08/2014
;1
;4th Edition
;
.12516 2 Baleful Strix
.12533 4 Shardless Agent
.12700 4 Deathrite Shaman
.9038 4 Tarmogoyf
.10780 2 Jace, the Mind Sculptor
.12004 2 Liliana of the Veil
.12 2 Bayou
.10747 2 Creeping Tar Pit
.12645 4 Abrupt Decay
.1547 4 Brainstorm
.2285 3 Force of Will
.1456 1 Hymn to Tourach
.13650 1 Toxic Deluge
.9286 3 Thoughtseize
.239 1 Swamp
.1486 4 Polluted Delta
.258 3 Underground Sea
.10706 4 Verdant Catacombs
.3329 2 Wasteland
.1 4 Ancestral Recall
.10612 2 Misty Rainforest
.252 2 Tropical Island
考虑到上述来源文本文件和list
文件,如何生成所需的输出文件格式?
答案1
所以我所做的是将list
文件修剪为前两个值(ID;名称),然后在源文本上使用此脚本文件:
#!/usr/bin/env bash
dos2unix "$1"
sed -e '/Sideboard/,$d' "$1" -e '/^$/,$d' | tee source_strip | cut -d ' ' -f 2- >temp
while IFS= read f; do
sed -n "s/\([0-9]*\);$f$/\.\1/p" list
done <temp >IDs
sed -ni 's/^\([0-9]*\) \([a-zA-Z]*\)/\1\t\2/p' source_strip
paste IDs source_strip > final
cat final
当然,这假设一个身份证号每个名称搜索都存在,否则将无法正常工作。当然有更优雅的方法来做到这一点,但在这种情况下它确实有效!