我有一个包含 10,000 行的文件,每行末尾都有一个数字,例如:
asdf ggg ١
gghh rtt ٣٢٥
tyyu bnnn jigff ٢٧
以相反的顺序排列所有数字的数字。正确的顺序是:
asdf ggg ١
gghh rtt ٥٢٣
tyyu bnnn jigff ٧٢
你能帮我(请)颠倒每行数字的顺序吗?
(٠، ١، ٢، ٣، ٤، ٥، ٦، ٧، ٨، ٩)
我有一个包含 10,000 行的文件,每行末尾都有一个数字,例如:
asdf ggg ١
gghh rtt ٣٢٥
tyyu bnnn jigff ٢٧
以相反的顺序排列所有数字的数字。正确的顺序是:
asdf ggg ١
gghh rtt ٥٢٣
tyyu bnnn jigff ٧٢
你能帮我(请)颠倒每行数字的顺序吗?
(٠، ١، ٢، ٣، ٤، ٥، ٦، ٧، ٨، ٩)
使用 Perl:
这会将替换命令应用于每一行输入。替换匹配行尾的任何数字字符串。无论匹配什么数字字符串,该
reverse()
函数都用于反转它。反转的结果用作替换中的替换文本。尾随
/e
导致 Perl 将reverse($1)
视为要评估的命令。启用 UTF-8 I/O的
-CSD
选项。perl
使用Raku(以前称为 Perl_6)
或者
样本输入:
样本输出:
上面的 Raku 解决方案与已经发布的 Perl 解决方案类似,但一个显着的区别是 Unicode 在默认情况下在 Raku 中被优雅地处理(无需记住额外的命令行标志)。捕获从
$0
Raku 开始。Raku 中的关键字有些不同(更精确?):翻转字符串的字母使用flip
关键字;要反转列表的顺序,请使用reverse
关键字。正则表达式中的代码块由
{ … }
花括号表示。在学习 Raku 时,如果你使用 Perl(5)/e
标志,你会得到一个很好的信息:https://docs.raku.org/language/unicode
https://docs.raku.org/language/regexes
https://raku.org