在我的文本文件中是这一行。
08.01.2013 20:06:36: SolsticeFTW (109.189.238.113:60381) 04ee8dfa81f700bba194a528911ecb4a - #0
08.01.2013 20:11:00: SolsticeFTW (109.189.238.113:60381) 04ee8dfa81f700bba194a528911ecb4a - #0
08.01.2013 20:11:24: SolsticeFTW (109.189.238.113:60381) 04ee8dfa81f700bba194a528911ecb4a - #0
08.01.2013 20:11:50: SolsticeFTW (109.189.238.113:60381) 04ee8dfa81f700bba194a528911ecb4a - #0
09.01.2013 15:39:57: lalka (95.165.55.92:15609) 161c5a17c5afc0b1e079fca7fdc8f1a9 - #0我想根据命令Findstr过滤一个文本文件,这是可行的,但我不能让它工作,只过滤32位数的字。例如04ee8dfa81f700bba194a528911ecb4a和161c5a17c5afc0b1e079fca7fdc8f1a9。到目前为止,它只通过过滤完整的行来工作。
有人知道我是如何过滤32位数字符号/标记的吗?
发布于 2013-01-16 22:23:38
FINDSTR只能打印匹配的整行。它没有像grep这样的功能,只能列出文本的匹配部分。
根据数据的格式,通常可以使用FOR /F命令从一行文本中提取令牌。您可以使用FINDSTR只选择适当的行,/F可以处理这些结果并提取32位标记。
我不知道你的FINDSTR搜索标准是什么,所以我会编一些东西作为一个例子。假设要打印以#0结尾的行的32位标记。
FINDSTR选择适当的行,寻找以#0结尾的行。对于/F,将每一行结果解析为由空格分隔的标记。(可以通过DELIMS选项更改令牌分隔符,但默认情况下它是空格和选项卡)。你想要第五枚代币。
for /f "tokens=5" %%A in ('findstr /le " #0" "someFile.txt"') do echo %%A编辑对OP注释的响应
如果您不需要过滤行,只需要将每个32位数字的ID写入一个新文件,那么它就更简单了:
(for /f "tokens=5" %%A in (logged-players.log) do echo %%A) >logged-bans.txthttps://stackoverflow.com/questions/14363981
复制相似问题