Board logo

标题: [求助]怎样截取字段 [打印本页]

作者: 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