2009-06-29 36 views

Trả lời

1

Nếu đó là một điều một lần, tại sao không sử dụng emacs bằng macro bàn phím?

youtube link

7

Bạn có thể nhận notepad ++ và thực hiện tìm kiếm và thay thế bằng regex như tìm kiếm (..) và thay thế bằng \ 1:

+0

Tại sao '\ 1-' chèn một dấu hai chấm? –

+0

Rất tiếc xin lỗi \ 1: – Matt

5

Nó có lẽ hơi quá đáng, nhưng tôi sẽ sử dụng Excel. Dán địa chỉ MAC của bạn vào cột A và công thức này vào cột B:

=LEFT(A1,2)&":"&MID(A1,3,2)&":"&MID(A1,5,2)&":"&MID(A1,7,2)&":"&MID(A1,9,2)&":"&RIGHT(A1,2) 

Sau đó, bạn có thể copy cột B, và một trong hai paste special...values vào cột C hoặc chỉ cần dán vào Notepad.

5

Bạn có thể sử dụng một lệnh sed như thế này:

sed 's/\(\w\w\)\(\w\w\)\(\w\w\)\(\w\w\)\(\w\w\)\(\w\w\)/\1:\2:\3:\4:\5:\6/g' filename 

này sẽ chỉ kéo ra 12 nhân vật trong nhóm hai, và nhổ chúng trở lại với dấu hai chấm ở giữa. Bạn cũng có thể thử một mẫu đơn giản hơn như s/(\ w \ w)/\ 1:/g, mặc dù điều này sẽ khiến bạn có thêm dấu hai chấm ở cuối mỗi địa chỉ.

+0

Hãy đánh tôi! Trong lần gửi lại lần cuối, bạn có thể sử dụng lệnh sed khác để loại bỏ dấu hai chấm, và nó có thể vẫn ngắn hơn. – SingleNegationElimination

+0

Không phải tất cả các phiên bản của 'sed' hỗ trợ '\ w' có nghĩa là một từ-ký tự. Độ chính xác cao hơn trong khớp ('[0-9a-fA-F]') sẽ làm cho giải pháp lặp lại thích hợp hơn. –

+0

Cá nhân tôi có thể làm điều đó trong Perl, nhưng tôi phải upvote Decex cách đơn giản để làm điều đó. perl -e "trong khi (<>) {$ _ = ~ s/(\ w {2})/$ 1:/g; s /: $/$ /;}" .. Tôi nghĩ rằng người ta sẽ làm điều đó . –

2

= CONCATENATE (MID (A2; 1; 2); ":"; MID (A2; 3; 2); ":"; MID (A2; 5; 2); ":"; MID (A2; 7; 2); ":"; MID (A2; 9; 2))

Điều này sẽ giúp trong OpenOffice

= CONCATENATE (MID (A7,1,2), ":", MID (A7 , 3,2), ":", MID (A7,5,2), ":", MID (A7,7,2), ":", MID (A7,9,2), ":", MID (A7,11,2))

ở đây nó được trong excel, tôi sử dụng câu trả lời của bạn ở trên và xây dựng ra nó, Cảm ơn

0

Linux, UNIX - Bash 
 
Given a address like MACstr="cc0deca96acf" 
 
MACfiexd=$(sed -e 's/.\{2\}/&:/g;s/.$//' <<<$MACstr) 
 
echo "$MACfixed" 
 
cc:0d:ec:a9:6a:cf

0

Dưới đây là một ví dụ nhanh PowerShell:

$macs = Get-Content C:\temp\MAC.txt 
$output = foreach ($mac in $macs){ 
    $mac.insert(2,":").insert(5,":").insert(8,":").insert(11,":").insert(14,":") 
} 
$output | Out-File c:\temp\newmac.txt 
-1
$macs = Get-Content C:\temp\MAC.txt 
$output = foreach ($mac in $macs){ 
    $mac.insert(2,":").insert(5,":").insert(8,":").insert(11,":").insert(14,":") 
} 
$output | Out-File c:\temp\newmac.txt 

Cảm ơn Jonathan Walz! Làm việc như người ở!

0

tôi đã sử dụng sau đây để thêm địa chỉ dấu hai chấm MAC đến một bảng HTML hiện trong vim:

:%s/<td> \([0-9a-zA-Z]\{2\}\)\([0-9a-zA-Z]\{2\}\)\([0-9a-zA-Z]\{2\}\)\([0-9a-zA-Z]\{2\}\)\([0-9a-zA-Z]\{2\}\)\([0-9a-zA-Z]\{2\}\) <\/td>/<td> \1:\2:\3:\4:\5:\6 <\/td>/g 
0

giải pháp của Matt sử dụng Notepad ++, nhưng tinh chỉnh để dòng sự thay đổi duy nhất mà (chỉ) có chứa một địa chỉ mac:

FIND: ^(..)(..)(..)(..)(..)(..)$

REPLACE: \1:\2:\3:\4:\5:\6

Các vấn đề liên quan