根据匹配的文本 / 参数修改 txt 文件中的重复单词 / 文本

By simon at 2019-05-21 • 0人收藏 • 25人看过

我有一个文本文件,包含:

{"Subtitle": {"Search": {"Burn": false,"Default": false,"Enable": false,"Forced": false } ,"SubtitleList": [{"Burn": false,"Default": true,"Forced": false,"ID": 1,"Offset": 0,"Track": 0}]}]]]]

但是,同样的结构可以在整个文件中重复多次,始终遵循相同的结构。

下面"SubtitleList"我想确保事情总是这样的"Default": true专页、同时"ID": 1「赛道」 : 0.

如果 ID 和 Track 等于其他任何东西(例如"ID": 2和"Track": 1或类似的东西) ,那么 default 应该是 false。

我认为这需要一个 for 循环,或者一个 if then else。

差不多是这样(伪代码):

如果"SubtitleList": [{"Burn": false,"Default": false,"Forced": false,"ID": 1,"Offset": 0,"Track": 0} ,那么"SubtitleList": [{"Burn": false,"Default": true,"Forced": false,"ID": 1,"Offset": 0,"Track": 0} ,其他什么也不做

这个"违约"只应该等于'true'而'ID': 1「赛道」 : 0否则它应该永远是"错误的"。

如果有人能帮忙构建一个。 这个的蝙蝠档案?

2 个回复 | 最后更新于 2019-05-21
2019-05-21   #1
@ echo OFF SETLOCAL SET"sourcedir u:  sourcedir"SET"destdir u:  destdir"SET"filename1% sourcedir%  q56199380.txt"SET"outfile%  outstdir". 清除 $ 句子太长,请短一点 (IF"% s""ID": 1,"SET"id1 y"IF"% s""Track": 0"SET"track0 y") rem 找到 end-of-hotsectio 句子太长,请短一点

你需要更改源目录及目的地来适应你的环境。

我用了一个叫做56199380.txt里面有你的数据和我测试用的假数据。

生成定义为% outfile% 的文件

这个Usebackq选项是必需的,因为我选择在源文件名后面加上引号。

因为你的数据只包含一个Subtitleist块,我扩展了数据以进行测试,并假设应该有多个Subtitleist在一个副标题,然后每个将被分开}],而不是}].

总的来说,使用了标准的读文本文件结构,将每一行依次分配给我不知道你在说什么.

如果一行包含字符串Subtitleist然后我们进入了一个热块这是可以改变的。 这个热块坚持到}]或}],被发现。

对象外部的线热块都会被期末考试反刍出来回声% a.

块中的数据存储在变量中$???在哪里???是一个递增的3位数字。

何时}]或}],在一个区块内被检测到结束的设置为Y(该方法克服了批处理缺少逻辑-or) ,并检查了存储在 $* 中的代码行身份证: 1,或「赛道」 : 0设置适当的旗帜。

在 $* 中保存的行然后被反刍,除了包含"违约":前面有任意数量的空格那个队伍分开了:然后用旗子重建1及轨迹0来控制分配给违约.

2019-05-21   #2

用 regex 解析和操作 JSON 似乎不是个好主意。 但是我忍不住试图用我的方法解决问题Bat 正则表达式文本处理实用工具.

Jrepl"({[ ^ }] *  qDefault  q:  s *)[ a-z ] + ([ ^ }] * qID  q:  s * ( d +)[ ^ }] *  qTrack  q:  s ( d +)[ ^ }] *)"^"$txt $1 + ($3'1'& $4'0'? 'true':'false') + $2"^ / p" qSubtitleList  q:  s * [[ ^ ] * ]"^ / m / xseq / jq / f input.txt / o-

我相信上述的守则应该是可靠的,只要:

  • 源文件是有效的 JSON
  • Subtitlelist 数组对象中成员的顺序不变
  • Subtitlelist 数组对象成员中没有嵌套的对象或数组
  • 可能还有一些我没想到的附加限制

登录后方可回帖

Loading...