[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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
复制代码
。。有问题。。怎么修改。谢谢大家。

本帖最后由 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
复制代码
***共同提高***

TOP

哥哥,第二个代码貌似有问题。

TOP

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列的字符串。
***共同提高***

TOP

谢谢BATMAN。但是你第二个代码没成功。。

TOP

IP最后一位后面没分隔符

TOP

  1. sed "s/的.*//" a.txt > b.txt
复制代码

TOP

。。。不用第三方就实现不 了吗

TOP

回复 3# wang6542975


    是因为findstr中的转义符\写成了/,已改正
***共同提高***

TOP

哥哥们。IP最后一位后面是没分隔符的。。看清楚。

TOP

回复 10# wang6542975


    你再看2楼的代码。。。
***共同提高***

TOP

  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
复制代码

TOP

再看我1.txt里的内容。

TOP

回复 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

TOP

本帖最后由 wang6542975 于 2013-9-27 14:43 编辑

再看我1.txt里的内容。DAIC 哥做的完美。

TOP

返回列表