找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 73345|回复: 21

[文本处理] 求助:BAT提取文本里的ip地址

[复制链接]
发表于 2013-9-27 13:49:29 | 显示全部楼层 |阅读模式
本帖最后由 wang6542975 于 2013-9-27 14:40 编辑

1.txt里的内容为
123.52.99.58的分组为:网维
1.1.1.1的分组为:网维
3.3.3.3分组为XX
4.35.20.4
怎么提取里面的IP地址到2.txt里


我写的代码如下:
  1. for /f "delims=. tokens=1,2,3," %%a in (1.txt) do echo %%a.%%b.%%c.%%d>>2.txt
复制代码
。。有问题。。怎么修改。谢谢大家。
发表于 2013-9-27 14:17:09 | 显示全部楼层
本帖最后由 batman 于 2013-9-27 14:37 编辑

如果文本每行全是123.52.99.58的分组为:网维这样的格式:

  1. @echo off
  2. (for /f "delims=的" %%a in (1.txt) do echo,%%a)>2.txt
  3. start 2.txt
复制代码
如果不是每行都是一样的格式:

  1. @echo off
  2. (for /f "delims=的" %%a in ('findstr "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" 1.txt') do echo,%%a)>2.txt
  3. start 2.txt
复制代码
 楼主| 发表于 2013-9-27 14:23:27 | 显示全部楼层
哥哥,第二个代码貌似有问题。
发表于 2013-9-27 14:24:27 | 显示全部楼层
for /f 有几个参数eol usebackq skip tokens delims,建议使用以下顺序来书写:
for /f "eol=a usebackq skip=1 tokens=1-4 delims=. " %%a in ("a b.txt") do...
如上for将会在读取a b.txt时忽略以a字符打头的行,并跳过头行,而取每行中以.和空格为分隔符分隔的1-4列的字符串。
 楼主| 发表于 2013-9-27 14:27:00 | 显示全部楼层
谢谢BATMAN。但是你第二个代码没成功。。
 楼主| 发表于 2013-9-27 14:29:17 | 显示全部楼层
IP最后一位后面没分隔符
发表于 2013-9-27 14:29:31 | 显示全部楼层
  1. sed "s/的.*//" a.txt > b.txt
复制代码
 楼主| 发表于 2013-9-27 14:32:26 | 显示全部楼层
。。。不用第三方就实现不 了吗
发表于 2013-9-27 14:34:13 | 显示全部楼层
回复 3# wang6542975


    是因为findstr中的转义符\写成了/,已改正
 楼主| 发表于 2013-9-27 14:36:02 | 显示全部楼层
哥哥们。IP最后一位后面是没分隔符的。。看清楚。
发表于 2013-9-27 14:38:20 | 显示全部楼层
回复 10# wang6542975


    你再看2楼的代码。。。
发表于 2013-9-27 14:39:56 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "tokens=1-4 delims=." %%a in (a.txt) do (
  4.     set ipend=%%d
  5.     if "!ipend:~2,1!" leq "9" (
  6.         set ipend=!ipend:~0,3!
  7.     ) else if "!ipend:~1,1!" leq "9" (
  8.         set ipend=!ipend:~0,2!
  9.     ) else if "!ipend:~0,1!" leq "9" (
  10.         set ipend=!ipend:~0,1!
  11.     )
  12.     echo %%a.%%b.%%c.!ipend!
  13. ))>b.txt
复制代码
 楼主| 发表于 2013-9-27 14:40:51 | 显示全部楼层
再看我1.txt里的内容。
发表于 2013-9-27 14:41:56 | 显示全部楼层
回复 10# wang6542975


我这里测试2楼的第二个代码没有发现问题

d:\Test>type a.txt
123.52.99.58的分组为:网维
1.1.1.1的分组为:网维
123.52.99.159的分组为:网维

d:\Test>test.bat
123.52.99.58
1.1.1.1
123.52.99.159
 楼主| 发表于 2013-9-27 14:42:36 | 显示全部楼层
本帖最后由 wang6542975 于 2013-9-27 14:43 编辑

再看我1.txt里的内容。DAIC 哥做的完美。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 17:24 , Processed in 0.033481 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表