微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jrepl-如何仅打印出第一条修改的行

如何解决jrepl-如何仅打印出第一条修改的行

我有几行文本文件,只想获取修改的第一行。

例如,我有以下文本文件,并希望获取ID号:

something 1 is written here
My ID 1234 for file A 
something 2 is written here
My ID 1234 for file A 
something 3 is written here

我的批处理文件jrepl命令是:

call jrepl ".*My ID ([0-9]+).*" "$1" /F "file.txt" /A /O "result.txt"

但是结果适用于所有修改的行,因此“ results.txt”包含:

1234
1234

如何命令jrepl在打印出第一个修改的行之后停止?

我必须说我遇到了类似的问题here,但是我没有成功遵循,对我来说,由于这种简单的需求,它似乎也很复杂。

解决方法

使用JScript作为替换参数,以便在第一次匹配后将jrepl的全局变量“ skip”设置为true。现在,当skip variable为true时,下一行将被跳过而不被打印出来。

call ..\jrepl\jrepl ".*My ID ([0-9]+).*"    "$txt = $1;skip=true;" /JMATCHQ  /F "file1.txt" /A /O "result.txt"

说明:

/ JMATCHQ-定义替换参数为JScript。在这种情况下,替换值必须设置为$ txt。

因此,当第一次匹配发生时,将调用JScript行并执行以下两项操作:

  1. 将替换值设置为$ txt-这将被打印出来。
  2. 将全局jrepl JS变量“ skip”设置为true-因此,不会打印出匹配的下一行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。