
标题: [求助]怎样截取字段 [打印本页]
作者: zouzhxi 时间: 2007-11-19 16:51 标题: [求助]怎样截取字段
CODE: [Copy to clipboard]
IP地址 用户名 工作组 说明 网卡MAC
---------------------------------------------------------------------------------
192.168.1.29 410 TC 00.14.78.84.1B.82
192.168.1.30 WORKGROUP COOLQUAN-A6C49B 00.13.8F.69.6B.19
192.168.1.78 WORKGROUP CHINESE-889F801 00.15.F2.9B.56.EF
192.168.1.98 WORKGROUP BL-SZU 00.0A.EB.6A.94.FB
192.168.1.116 WORKGROUP LGS-E568487E7CC 00.0E.1F.01.CA.07
192.168.1.128 WORKGROUP 8704363E90BA467 00.E0.4C.83.7D.C4
192.168.1.192 WORKGROUP AE403F87EF9846B 00.04.61.79.BF.A9
192.168.1.226 WORKGROUP MLY 00.14.78.36.40.61
192.168.1.229 WORKGROUP 351834C1E38A4F5 00.14.85.85.51.31
192.168.1.244 MSHOME LENOVO-A79EEA16 00.15.58.15.06.DC
192.168.2.2 WORKGROUP SZU-SSU2 00.14.85.17.79.60
192.168.2.16 AV-GROUP DELL2950-3 00.18.8B.37.B1.7B
192.168.2.17 AV-GROUP DELL1950-1 00.19.B9.F0.46.6C
192.168.2.18 AV-GROUP HP-DL380-2 00.13.21.C9.3D.05
192.168.2.19 AV-GROUP HP140-1 00.15.60.5F.05.A5
192.168.2.20 AV-GROUP HP140-2 00.15.60.09.82.A6
192.168.2.22 WORKGROUP SZU-AZCIEHAU8QS 00.10.5A.0B.0B.39
192.168.2.25 AV-GROUP HP-DL380-1 00.13.21.C9.3C.D7
192.168.2.100 WORKGROUP SZUSBC 00.15.60.0B.FE.02
192.168.2.238 IS~SZU-EDU 00.B0.D0.D1.F9.EC
192.168.3.16 DREDY WORKGROUP 00.0E.1F.01.B0.00
192.168.3.152 WORKGROUP THTFCOMPUTER 00.15.58.A7.89.1A
192.168.4.24 ASD WORKGROUP 00.10.88.40.1F.69
192.168.4.35 WORKGROUP B7D54750E07740E 00.40.46.02.1D.57
192.168.4.39 WORKGROUP 00.01.50.55.91.02
192.168.4.88 ADMINISTRATOR WORKGROUP WWW-36C6E431522 00.00.21.DC.86.17
192.168.4.89 WORKGROUP ZHYB 00.17.31.6A.D9.34
192.168.4.90 MSHOME D8DYL2BX 00.18.8B.B1.2F.60
192.168.4.96 袁柯明 IS~YKM YKM 00.19.21.45.AD.41
192.168.4.102 WORKGROUP 290F88C04B0A484 00.0F.FE.A9.2B.28
192.168.4.109 HP 学报 HP-7SL1LE 00.0F.FE.16.FB.A4
192.168.4.115 WORKGROUP WQEQWER 00.1D.09.09.9B.D0
192.168.4.124 WORKGROUP 00.0F.FE.A9.5E.D0
192.168.4.153 WORKGROUP 00.F0.CF.83.49.E1
192.168.4.217 WORKGROUP LILI 00.17.31.6A.D9.C9
192.168.4.222 WORKGROUP SZAHTY 00.0F.FE.04.8A.92
192.168.4.226 WORKGROUP CAI 00.0B.CD.47.7A.C5
192.168.4.242 MSHOME HU-92BF836 00.10.DC.64.C3.39
192.168.4.244 WORKGROUP 00.0F.FE.20.BD.0A
192.168.4.220 MFP-00F84949 __SAMBA__ __SAMBA__ 00.00.00.00.00.00
我想问下一,,,像上面的内容,,,我怎么才能得到IP与MAC呢
如:
192.168.1.29:00.14.78.84.1B.82
192.168.4.244:00.0F.FE.20.BD.0A
192.168.4.200:00.00.00.00.00.00

[ Last edited by zouzhxi on 2007-11-19 at 04:53 PM ]
作者: zh159 时间: 2007-11-19 16:59
用字符截取来得快些,具体搜索论坛
作者: lxmxn 时间: 2007-11-19 17:05
gawk "NR>2{printf(\"%s:%s\n\",$1,$NF) }" Ur-file
[ Last edited by lxmxn on 2007-11-19 at 05:07 PM ]
作者: zouzhxi 时间: 2007-11-19 17:27
我不会用....
作者: lxmxn 时间: 2007-11-19 17:57
如果你每行的长度是固定的,用变量的字符截取功能是个不错的选择,如果不是固定长度的,可以试试下面的代码。CODE: [Copy to clipboard]
@echo off&setlocal EnableDelayedExpansion
for /f "delims=" %%a in ('more +2 a.txt') do (
for %%b in (%%a) do (
if not defined ips (set/p=%%b:<nul&set ips=perler) else (set mac=%%b)
)
echo:!mac!&set ips=
)
pause
作者: zh159 时间: 2007-11-19 18:02
长度不固定也没关系,只要在两边就可以,提取后:
%str:~0,13%-%str:~-17%
截取后再将空格替换掉
作者: lxmxn 时间: 2007-11-19 18:12
RE zh159:
我的意思是如果行首或者行尾还有空格之类的不可见字符...
作者: jmz573515 时间: 2007-11-19 18:37
笨方法写一下....CODE: [Copy to clipboard]
@echo off
setlocal enabledelayedexpansion
set n=0
for /f "delims= " %%i in (a.txt) do (
set a!n!=%%i
set /a n+=1
)
set n=0
for /f "delims=" %%j in (a.txt) do (
set str=%%j
set b!n!=!str:~-17!
set /a n+=1
)
set /a n-=1
for /l %%k in (0,1,!n!) do (
echo.!a%%k!:!b%%k!
)
pause
修改了一下...CODE: [Copy to clipboard]
@echo off
setlocal enabledelayedexpansion
set n=0
for /f "delims= " %%i in (a.txt) do (
set a!n!=%%i
set /a n+=1
)
set n=0
for /f "delims=" %%j in (a.txt) do (
set str=%%j
set str1=!str:~-17!
call echo %%a!n!%%:!str1!
set /a n+=1
)
pause
[ Last edited by jmz573515 on 2007-11-19 at 06:53 PM ]
作者: hxwxyz 时间: 2007-11-19 19:30
学习了
作者: zh159 时间: 2007-11-19 19:42
| Quote: |
Originally posted by lxmxn at 2007-11-19 18:12:
RE zh159:
我的意思是如果行首或者行尾还有空格之类的不可见字符... |
|
看LZ提供的资料可以不用考虑,除非数据不同才另外考虑,否则没必要复杂化CODE: [Copy to clipboard]
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in (a.txt) do (
set str=%%i
call set IP=%%str:~0,13%%
call set IP=%%IP: =%%
call set MAC=%%str:~-17%%
call echo %%IP%%:%%MAC%%
)
pause
[ Last edited by zh159 on 2007-11-20 at 10:22 AM ]
作者: 26933062 时间: 2007-11-20 00:19
方法一、
:CODE: [Copy to clipboard]
@echo off
for /f "skip=2 tokens=1-5 delims= " %%a in (b.txt) do (
if not "%%e"=="" (echo %%a:%%e) else (
if not "%%d"=="" (echo %%a:%%d) else echo %%a:%%c
)
)
pause
方法二、
:CODE: [Copy to clipboard]
@echo off
setlocal EnableDelayedExpansion
for /f "skip=2 tokens=1* delims= " %%a in (b.txt) do (
for %%i in (%%b) do set var=%%i
echo %%a:!var!
)
pause
[ Last edited by 26933062 on 2007-11-20 at 12:28 AM ]
作者: zouzhxi 时间: 2007-11-20 08:41
行首和行尾都没有其他不可见字符,,,
只是IP与MAC之间有不固定描述文字,,,
..
作者: scriptor 时间: 2007-11-20 18:29
ft~~ 都被你们说了,,我想说都没有机会~~~
sigh~~
好久没有发帖了~~
| 欢迎光临 中国DOS联盟论坛 (http://cndos.fam.cx/forum/) |
Powered by Discuz! 2.5 |