我正在尝试使用 ruby 在 gsub() 中生成迭代值。我写的那一行是:
ruby -pe '$i=0; gsub(/⎦\d+?⎡/, "⎦#{$i+=1}⎡")' < test.txt
但这实际上并没有进行迭代;相反,它会将 的值设置$i
为零并在每次替换发生时将其加 1。
我也用过:
ruby -pe 'BEGIN{$i=0}; gsub(/\d+?/, "#{$i+=1}")' < test.txt
那个输出行号而不是变量迭代值。不应该只在 REGEX 匹配时才调用 gsub() 吗?
该命令的目的是将迭代值 + 1 替换为文件中找到的下一个数字。例如:
Lorem ipsum dolor 2 sat amet,consectetuer adipiscing elit,sed 7 diam nonummy nibh euismod 1 tincidunt ut laoreet dolore magna 10 aliquam erat volutpat。Ut wisi enim ad minim veniam, quis nostrud exerci 15 tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat。
输出:
Lorem ipsum dolor 1 sat amet,consectetuer adipiscing elit,sed 2 diam nonummy nibh euismod 3 tincidunt ut laoreet dolore magna 4 aliquam erat volutpat。Ut wisi enim ad minim veniam, quis nostrud exerci 5 tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat。
Update1:我在进一步阅读后尝试了这一行:
ruby -pe 'BEGIN{$i=0}; gsub /\d+?/, "#{$i+=1}" if ~/\d+?/' < aa01.xhtml
但是,我使用的命令行中的过程似乎一开始就不正确。它应该首先找到有数字的行。然后增加变量并将其替换为找到的数字,如果同一行中存在任何数字,则移动到下一个数字。