Board logo

标题: 【求助】请教一下如何从一组字符串中提取几个关键字 [打印本页]

作者: qdfeng     时间: 2010-6-15 19:30    标题: 【求助】请教一下如何从一组字符串中提取几个关键字

我提取交换机端口光功率生成txt文件,其内容如下:

GigabitEthernet1/0/0 current state : UP
Rx Power: -4.85dBm, Tx Power: -4.99dBm
GigabitEthernet1/0/1 current state : UP
Rx Power: -5.73dBm, Tx Power: -5.27dBm
GigabitEthernet1/0/2 current state : UP
Rx Power: -4.93dBm, Tx Power: -4.94dBm
GigabitEthernet1/0/3 current state : UP   
Rx Power: -4.17dBm, Tx Power: -4.99dBm
GigabitEthernet1/0/4 current state : UP
Rx Power: -5.23dBm, Tx Power: -5.07dBm

我想生成如下格式的txt文件,各位高手应该怎么写?谢谢哈

GigabitEthernet1/0/1  Rx Power: -5.73dBm
GigabitEthernet1/0/2  Rx Power: -4.93dBm
GigabitEthernet1/0/3  Rx Power: -4.17dBm
GigabitEthernet1/0/4  Rx Power: -5.23dBm
作者: Hanyeguxing     时间: 2010-6-15 19:43

@echo off&setlocal enabledelayedexpansion
(for /F "skip=2 delims=Cc," %%a in (1.txt) do set "a=%%a"&if /i "!a:~0,1!"=="G" (set/p=%%a<nul) else echo.%%a)>2.txt
或:
@echo off&setlocal enabledelayedexpansion
(for /F "delims=Cc," %%a in (1.txt) do (set "a=%%a"&set/a n+=1&if !n! gtr 2 if /i "!a:~0,1!"=="G" (set/p=%%a<nul) else echo.%%a))>2.txt
或:
@echo off&setlocal enabledelayedexpansion
(for /F "skip=2 tokens=1-3 delims=, " %%a in (1.txt) do set "a=%%a"&if /i "!a:~0,1!"=="G" (set/p=%%a<nul) else echo.%%a %%b %%c)>2.txt
或:
@echo off&setlocal enabledelayedexpansion
(for /F "tokens=1-3 delims=, " %%a in (1.txt) do set "a=%%a"&set/a n+=1&if !n! gtr 2 if /i "!a:~0,1!"=="G" (set/p=%%a<nul) else echo.%%a %%b %%c)>2.txt
[ Last edited by Hanyeguxing on 2010-6-15 at 20:02 ]
作者: qdfeng     时间: 2010-6-15 20:23
非常感谢!!!!!!!!
作者: qdfeng     时间: 2010-6-15 21:10
再请教一下如果字符串中还存在pos这个关键字我如何提取啊?

GigabitEthernet1/0/3 current state : UP   
Rx Power: -4.17dBm, Tx Power: -4.99dBm
GigabitEthernet1/0/4 current state : UP
Rx Power: -5.23dBm, Tx Power: -5.07dBm
Pos1/0/1 current state : UP
Rx Power: -5.25dBm, Tx Power: -4.26dBm

生成结果为:

GigabitEthernet1/0/3  Rx Power: -4.17dBm
GigabitEthernet1/0/4  Rx Power: -5.23dBm
Pos1/0/1  Rx Power: -5.25dBm
作者: Hanyeguxing     时间: 2010-6-15 23:11

@echo off&setlocal enabledelayedexpansion
(for /F "tokens=1-3 delims=, " %%a in (1.txt) do (set "a=%%a"
if not defined n if /i "!a:~0,1!"=="R" echo.!a! %%b %%c
if /i "!a:~0,1!"=="G" call:n,"!a!"
if /i "!a:~0,1!"=="P" call:n,"!a!"))>2.txt
pause&exit
:n
set a=%~1
if not "!a:~-2!"=="/0" (set n=&set/p=!a! <nul) else set n==
[ Last edited by Hanyeguxing on 2010-6-15 at 23:13 ]
作者: qdfeng     时间: 2010-6-16 10:13
呵呵,谢谢Hanyeguxing老大哈!!!!