我有 2250 个元数据文件,需要有一个从 0 开始到 2249 的唯一编号,如下行。
"name": "KF # RENUMBER",
我使用了 perl 命令 (perl -pi -w -e 's/SEARCH_FOR/REPLACE_WITH/g;' *.json) 将多个文件中的某个单词替换为我需要的任何内容,但我不知道如何替换用一个单词替换它,用数字替换它,所以在一天结束时我有多个文件,其中有一行:
"name": "KF # 1",
"name": "KF # 2",
...
"name": "KF # 2249",
我试过perl -pi -w -e 's/RENUMBER/$count++;/g;' *.json
但这"name": "KF # ++;",
在所有文件中都返回了
如果这很重要的话,我正在使用 MacOS 中的终端来执行此操作。
任何帮助,将不胜感激!谢谢!
您需要告诉 Perl 替换部分不是字符串,而是一些要运行的代码:
“e”代表“评估”。
另外,如果您想从 1 而不是 0 开始,请切换到
++$count
。您还可以在替换之外增加变量。
如果每行有多个 RENUMBER(前一个用不同的数字替换每个 RENUMBER,这个对整行使用相同的数字),则其行为会有所不同。我假设每行永远不会超过一个 RENUMBER,因此我删除了
/g
.您需要将
e
标志添加到s//
表达式中,它告诉 perl 将替换部分计算为表达式:给定三个文件,
data{1,2,3}.json
每个文件包含:运行上述命令会导致: