使用 findstr 命令获取字符串的结尾
Get the end of a string using findstr command
由于 Windows 上没有本机 grep,我正在努力获取位于一行末尾的子字符串的末尾,该行前面有一些空格。
我的搜索字符串总是具有以下模式:
Some description about something: the-value-I-want-separated-by-hyphens
(描述和值之间有5个空格)
使用 Regex 我可以做到:[^ ]+$
其中 returns:the-value-I-want-separated-by-hyphens
(参见此处:https://regex101.com/r/zgTGWA/1)
但这在我的 cmd 中不起作用。
上下文
我有一堆文件,看起来像这样:
file.txt
Description Key1: the-value-I-want-separated-by-hyphens
Another Description Key2: another-value
Another Description Key3: another-value
我在cmd中的测试代码:
type file.txt | findstr "Key1" | findstr /R /C"[^ ]+$"
虽然第一个查找字符串非常适合过滤所需的行,但第二个查找字符串没有 return 所需的值。
感谢任何建议
您可以使用通配符子串替换来删除该行的前导部分。通配符替换是非贪婪的,因此它只会删除找到第一组 5 个空格的部分。我也用冒号来加强匹配。
@echo off
FOR /F "delims=" %%G IN ('type file.txt ^| findstr "Key1:"') DO (
set "line=%%G"
setlocal enabledelayedexpansion
echo !line:*: =!
FOR /F "delims=" %%H IN ("!line:*: =!") DO endlocal&set "result=%%H"
)
echo Result=%result%
pause
根据您的输入文件,这就是结果。
C:\BatchFiles\substring>so.bat
the-value-I-want-separated-by-hyphens
Result=the-value-I-want-separated-by-hyphens
Press any key to continue . . .
由于 Windows 上没有本机 grep,我正在努力获取位于一行末尾的子字符串的末尾,该行前面有一些空格。
我的搜索字符串总是具有以下模式:
Some description about something: the-value-I-want-separated-by-hyphens
(描述和值之间有5个空格)
使用 Regex 我可以做到:[^ ]+$
其中 returns:the-value-I-want-separated-by-hyphens
(参见此处:https://regex101.com/r/zgTGWA/1)
但这在我的 cmd 中不起作用。
上下文
我有一堆文件,看起来像这样:
file.txt
Description Key1: the-value-I-want-separated-by-hyphens
Another Description Key2: another-value
Another Description Key3: another-value
我在cmd中的测试代码:
type file.txt | findstr "Key1" | findstr /R /C"[^ ]+$"
虽然第一个查找字符串非常适合过滤所需的行,但第二个查找字符串没有 return 所需的值。
感谢任何建议
您可以使用通配符子串替换来删除该行的前导部分。通配符替换是非贪婪的,因此它只会删除找到第一组 5 个空格的部分。我也用冒号来加强匹配。
@echo off
FOR /F "delims=" %%G IN ('type file.txt ^| findstr "Key1:"') DO (
set "line=%%G"
setlocal enabledelayedexpansion
echo !line:*: =!
FOR /F "delims=" %%H IN ("!line:*: =!") DO endlocal&set "result=%%H"
)
echo Result=%result%
pause
根据您的输入文件,这就是结果。
C:\BatchFiles\substring>so.bat
the-value-I-want-separated-by-hyphens
Result=the-value-I-want-separated-by-hyphens
Press any key to continue . . .