2009-06-29 4 views

Antwort

1

Wenn es eine einmalige Sache ist, warum nicht Emacs mit einem Tastaturmakro verwenden?

youtube link

7

Sie Notizblock bekommen können ++ und eine Suche und für (..) mit regex wie Suche ersetzen und ersetzen mit \ 1:

+0

Warum sollte '\ 1-' einen Doppelpunkt einfügen? –

+0

Woops sorry sollte \ 1: – Matt

5

Es ist vielleicht übertrieben, aber ich würde Excel verwenden. Fügen Sie Ihre MAC-Adressen in der Spalte A und diese Formel in Spalte B:

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

Dann können Sie copy Spalte B, und entweder paste special...values in Spalte C oder fügen Sie ihn in den Editor.

5

Sie könnten einen Sed-Befehl wie folgt verwenden:

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

Dies wird herausziehen nur 12 Zeichen in Gruppen von zwei, und spucken sie mit Doppelpunkten in der Mitte wieder heraus. Sie könnten auch ein einfacheres Muster wie s/(\ w \ w)/\ 1:/g ausprobieren, obwohl Sie am Ende jeder Adresse einen zusätzlichen Doppelpunkt erhalten.

+0

Beat mich dazu! Zu Ihrer letzten Erinnerung könnten Sie dann einen anderen sed-Befehl verwenden, um den nachlaufenden Doppelpunkt zu entfernen, und er könnte immer noch kürzer sein. – SingleNegationElimination

+0

Nicht alle Versionen von 'sed' unterstützen '\ w' für ein Wortzeichen. Eine größere Genauigkeit in der Übereinstimmung ('[0-9a-fA-F]') würde die iterative Lösung bevorzugen. –

+0

Ich persönlich würde es wahrscheinlich in Perl machen, aber ich muss die anständig einfache Regex-Methode verbessern. perl -e "while (<>) {$ _ = ~ s/(\ w {2})/$ 1:/g; s /: $/$ /;}" .. Ich denke, dass man es tun würde . –

2

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

Diese in Open

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

Hier ist es in Excel, habe ich Ihre Antwort oben und gebaut von ihm weg, Dank

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

Hier ist ein schnelles Powershell Beispiel:

$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 

Dank Jonathan Walz! Lief wie am Schnürchen!

0

habe ich die folgenden MAC Doppelpunkte in vim zu einem bestehenden HTML-Tabelle-Adresse hinzufügen:

:%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

Notepad Matts Lösung mit ++, aber fein abgestimmt, um nur Wechsellinien, die (nur) eine MAC-Adresse enthalten:

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

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

Verwandte Themen