使用perl递增文本文件中的数字

时间:2017-02-27 11:24:49

标签: regex windows perl numbers text-files

我想通过使用perl为所有文件中包含的所有数字添加静态偏移量,从命令行批处理文本文件。

例如,如果文件包含行:OrderedDict([("Ab", {'name': 'usa', 'boolean': 'YES', 'result': 'YES'}), ("Ac", {'name': 'usa', 'boolean': 'NO', 'result': 'YES'}), ("Ad", {'name': 'UK', 'boolean': 'NO', 'result': 'NO'}), ("Ae", {'name': 'UK', 'boolean': 'NO', 'result': 'NO'})]) 且偏移量为AN_IDENTIFIER_TOKEN = 1,,那么此行应转换为19

我尝试使用AN_IDENTIFIER_TOKEN = 20,,但确实产生了与输入相同的输出(没有更改数字)。传递给perl的正确命令是什么?

在Windows上使用ActiveState Perl 5.24.1。

2 个答案:

答案 0 :(得分:3)

它应该有效,试试这个:

perl -pe "s/(\d+)/19+$1/eg" file1.txt

您的正则表达式(\d+)$仅匹配字符串末尾的数字,因此不匹配1,

如果您只想匹配" = <digits>,",请使用类似

的内容
perl -pe "s/ = (\d+),/' = '.(19+$1).','/eg" file1.txt

答案 1 :(得分:0)

如果你想改变文件中行的结尾的数字,并且这些数字后面总是有逗号,那么你可以使用tnis

S/(\d+)(?=,\s*$)/$1+19/e

它使用前瞻来检查数字后跟逗号,可选空格和行尾