我有非标准数据,我想对其进行标准化
文件:
d101 11001
e101 9665
f101 9663
d102 11002
e102 11003
f102 11004
g102 11005
所需的输出:
d101 11001
e101 12001
f101 12002
d102 11002
e102 11003
f102 11004
g102 11005
所以逻辑应该是,如果 column2 = 4 的长度,它应该用提供的系列的增量编号替换它:在这种情况下,1200 是系列,& 1、2、3 .. 是增量。
请注意,我们首先递增
n
然后分配,以使用新值。如果我们想从我们开始打印,12000
我们会使用:$2=n++
,首先分配然后增加。使用Raku(以前称为 Perl6)
简而言之,raku 是在命令行中使用
-ne
(逐行、非自动打印)标志调用的。声明一个state
变量(一次且仅一次),用于在代码中递增。在第二个语句中,.words[0]
第一个空格分隔的“单词”(即列)printed
后跟一个~
波浪号连接的" "
空格(用于分隔输出列)。在第三个语句中, (big-S)替换命令在(第二列)中S///
搜索\d**4
正好 4 个数字。given .words[1]
匹配被替换{++$i + 12000}
为计算值(花括号表示正则表达式中的代码块)并返回(因为S///
big-S 替换返回修改后的字符串)。样本输入:
样本输出:
https://raku.org