【求助】利用command-line擷取字串





ycl
2004-06-06, 02:58 PM
os windows xp

C:\>getmac

實體位址 傳輸名稱
=================== ==========================================================
00-E0-18-99-DF-C9 \Device\Tcpip_{7DFB7B9F-04AA-4FC5-A225-EED5B598C551}


是否有辦法只要擷取 {7DFB7B9F-04AA-4FC5-A225-EED5B598C551}這個字串
試了許多指令都沒有辦法

EX:
getmac | find "{"
00-E0-18-99-DF-C9 \Device\Tcpip_{7DFB7B9F-04AA-4FC5-A225-EED5B598C551}

getmac | findstr "{"
00-E0-18-99-DF-C9 \Device\Tcpip_{7DFB7B9F-04AA-4FC5-A225-EED5B598C551}




raytracy
2004-06-06, 03:57 PM
最初由 ycl 發表
是否有辦法只要擷取 {7DFB7B9F-04AA-4FC5-A225-EED5B598C551}這個字串
試了許多指令都沒有辦法
印象中, Windows 好像沒有內建的字串處理指令, 您可能要另外安裝 Perl, sed 或 awk 去處理....

dou0228
2004-06-06, 04:06 PM
用 php 吧...
getmac 指令跑起來好慢..

ipconfig /all 配合 php 的 ereg() 就可以了..:D

ycl
2004-06-06, 07:29 PM
最初由 raytracy 發表
印象中, Windows 好像沒有內建的字串處理指令, 您可能要另外安裝 Perl, sed 或 awk 去處理....

我有找到 SED for wwindows

http://sed.sourceforge.net/

請問一下如果要用SED 是要如何下指令呢
試了一下,還是摸不出頭緒來

麻煩請不要在PCZONE上使用注音文,請多配合,謝謝~!!
詳情請看版規 (http://www.pczone.com.tw/vbb3/showthread.php?t=10222)

Written by TonyYang

不好意思,下次會改進

raytracy
2004-06-07, 01:22 AM
使用 sed:

getmac | sed -e 's/^.*_//'

可以得到下面的結果:

實體位址 傳輸名稱
======================================
{D0E86535-6863-408D-9ECD-C5121DBC681D}
{8B53CCC6-B423-438E-AC46-2FC32E038E9D}
{831A1BDE-6727-4616-82F9-37062023AB7C}

ycl
2004-06-08, 09:05 PM
最初由 raytracy 發表
使用 sed:

getmac | sed -e 's/^.*_//'

可以得到下面的結果:

實體位址 傳輸名稱
======================================
{D0E86535-6863-408D-9ECD-C5121DBC681D}
{8B53CCC6-B423-438E-AC46-2FC32E038E9D}
{831A1BDE-6727-4616-82F9-37062023AB7C}


如果是有一個檔案,內容是由 winipcfg /batch:c:\ip.txt


Windows NT IP Configuration

Ethernet adapter {7DFB7B9F-04AA-4FC5-A225-EED5B598C551}:

IP Address. . . . . . . . . : 192.168.1.2
Subnet Mask . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . : 192.168.1.1

那又如何得知{7DFB7B9F-04AA-4FC5-A225-EED5B598C551}

不知 哪裡有 sed 的相關文件或是範例呢
感謝你的回覆

raytracy
2004-06-09, 12:17 AM
試試:

find "{" ip.txt | sed -e "s/^.* //" | sed -e "s/://"

小弟對 sed 了解不多, 像上面的工作應該可以合併成一個 sed 來做, 但小弟只會用兩個 sed 去做. 您可以參考這裡解說:

http://www.ascc.net/nl/83/1018/03.html
http://www.ascc.net/nl/83/1019/02.txt

不過, 在使用 sed 之前, 您得先學會「正規表示式」: Regular Expression (regex), 因為 sed 的字串比對功能是用 regex 格式來表示的(像上面的「^.* 」就是 regex 語法), 小弟對 regex 也不熟, 您可以研究看看這裡:

http://main.rtfiber.com.tw/~changyj/regex.1/

ps. 還有, 大哥, 上面板主已經出來勸導了, 您發言時要注意一下打字習慣, 因為在這裡的文章還有很多其他地區的華人觀看, 但他們不見得懂注音符號, 所以此處發言「禁止使用注音文」, 像您上面最後寫的那個「ㄋ」(我這是舉例啊! 版主饒命...;)), 就違反了這邊的規定; 您若再不小心, 文章可能會不見天日....:D