jrepl - 如何只打印出第一个修改的行
jrepl - how to print out only first modified line
我有几行文本文件,只想获取修改的第一行。
例如,我有以下文本文件并想获取 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]+).*" "" /F "file.txt" /A /O "result.txt"
但结果是针对所有修改的行,因此“results.txt”包含:
1234
1234
如何命令 jrepl 在打印出的第一个修改行后停止?
我必须说我看到了一个类似的问题,但我没有成功跟进,在我看来对于这种简单的需求也很复杂。
使用 JScript 作为替换参数,这样您就可以在第一次匹配后将 jrepl 的全局变量 'skip' 设置为 true。现在,当 skip 变量为真时,下一行将被跳过而不被打印出来。
call ..\jrepl\jrepl ".*My ID ([0-9]+).*" "$txt = ;skip=true;" /JMATCHQ /F "file1.txt" /A /O "result.txt"
描述:
/JMATCHQ - 定义替换参数是 JScript。在这种情况下,替换值必须设置为 $txt.
因此,当第一次匹配发生时,JScript 行被调用并做了两件事:
- 将替换值设置为 $txt - 这将被打印出来。
- 将全局 jrepl JS 变量 'skip' 设置为 true - 因此,不会打印出匹配的下一行。
我有几行文本文件,只想获取修改的第一行。
例如,我有以下文本文件并想获取 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]+).*" "" /F "file.txt" /A /O "result.txt"
但结果是针对所有修改的行,因此“results.txt”包含:
1234
1234
如何命令 jrepl 在打印出的第一个修改行后停止?
我必须说我看到了一个类似的问题
使用 JScript 作为替换参数,这样您就可以在第一次匹配后将 jrepl 的全局变量 'skip' 设置为 true。现在,当 skip 变量为真时,下一行将被跳过而不被打印出来。
call ..\jrepl\jrepl ".*My ID ([0-9]+).*" "$txt = ;skip=true;" /JMATCHQ /F "file1.txt" /A /O "result.txt"
描述:
/JMATCHQ - 定义替换参数是 JScript。在这种情况下,替换值必须设置为 $txt.
因此,当第一次匹配发生时,JScript 行被调用并做了两件事:
- 将替换值设置为 $txt - 这将被打印出来。
- 将全局 jrepl JS 变量 'skip' 设置为 true - 因此,不会打印出匹配的下一行。