我想通过使用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。
答案 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
它使用前瞻来检查数字后跟逗号,可选空格和行尾