Board logo

标题: [文本处理] [已解决] 批处理如何在文件中筛选,配对? [打印本页]

作者: ccccpp    时间: 2011-9-7 12:52     标题: [已解决] 批处理如何在文件中筛选,配对?

有一个文件,取一小段
....
Internet  192.27.219.1     1         0021.973f.45ee  arpa   FastEthernet 6/0.470
Internet  192.27.219.30    --        001a.a93a.20f9  arpa   FastEthernet 6/0.470
Internet  192.27.220.5     14        0040.481c.fbe0  arpa   FastEthernet 6/0.440
Internet  192.27.220.3     0         0013.c44a.7615  arpa   FastEthernet 6/0.440
Internet  192.27.220.30    --        001a.a93a.20f9  arpa   FastEthernet 6/0.440
....
470        0021.973f.45ee       DYNAMIC  FastEthernet 5/20
399        001a.a93a.20f9       DYNAMIC  GigabitEthernet 6/25
400        0001.29a3.d4ea       DYNAMIC  FastEthernet 6/17
400        0001.29a3.d4ee       DYNAMIC  FastEthernet 6/14
400        0001.29a3.de47       DYNAMIC  FastEthernet 6/23
400        0001.6c9f.43ff       DYNAMIC  FastEthernet 6/2
...
批处理如何能筛选相应的MAC地址,并配对IP相关行,把"DYNAMIC"改写为相应的IP地址

470        0021.973f.45ee       192.27.219.1  FastEthernet 5/20
399        001a.a93a.20f9       192.27.219.30  GigabitEthernet 6/25
400        0001.29a3.d4ea       192.27.208.23  FastEthernet 6/17
400        0001.29a3.d4ee       192.27.208.25  FastEthernet 6/14
400        0001.29a3.de47       192.27.208.24  FastEthernet 6/23
400        0001.6c9f.43ff          192.27.208.10  FastEthernet 6/2
或者不改"DYNAMIC",在后面增加"空格+IP地址"

470        0021.973f.45ee       DYNAMIC  FastEthernet 5/20 192.27.219.1
399        001a.a93a.20f9       DYNAMIC  GigabitEthernet 6/25 192.27.219.30
400        0001.29a3.d4ea       DYNAMIC  FastEthernet 6/17 192.27.208.23
400        0001.29a3.d4ee       DYNAMIC  FastEthernet 6/14 192.27.208.25
400        0001.29a3.de47       DYNAMIC  FastEthernet 6/23 192.27.208.24
400        0001.6c9f.43ff       DYNAMIC  FastEthernet 6/2 192.27.208.10
作者: ccccpp    时间: 2011-9-8 10:36

顶,请高手帮忙
作者: BS0小陈    时间: 2011-9-8 11:02

新人没看懂!
作者: ccccpp    时间: 2011-9-13 13:55

@echo off
findstr FastEthernet wkdxz.txt >3.txt
findstr /v /c:"/24" 3.txt >output.txt  

先把含FastEthernet的行生成一个文件,再把含"/24"的行删,保存为OUTPUT.TXT ,原需求贴在
http://www.bathome.net/thread-13900-1-1.html
因为24和25口为级联,可不统计
跟着
@echo off&setlocal enabledelayedexpansion
rem 初始文本
for /f "tokens=2,4 delims= " %%i in ('type "%~dp0output.txt" ^|findstr /i /m "internet amd"') do set "%%j=%%i"
REM 成文本中簺选出 預取理文本  并按此生存符合要求的文本
(for /f "tokens=1,2,3* delims= " %%i in ('type "%~dp0output.txt" ^|find /i "DYNAMIC"') do echo.%%i  %%j  !%%j!  %%l)>"%~dp0IP_MAC.txt"

IP_mac.txt为所需文件了,(以上代码为无优论坛x9tian兄提供,能不能再精简




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2