2009-06-29 13 views

risposta

1

Se si tratta di una cosa sola, perché non utilizzare emacs con una macro della tastiera?

youtube link

7

Si potrebbe ottenere Notepad ++ e fare una ricerca e sostituzione con espressioni regolari come ricerca di (..) e sostituirlo con \ 1:

+0

Perché sarebbe '\ 1-' inserire i due punti? –

+0

Woops mi dispiace dovrebbe essere \ 1: – Matt

5

'forse eccessivo, ma vorrei usare Excel. Incollare il indirizzi MAC in colonna A e questa formula nella colonna B:

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

Quindi, è possibile copy colonna B, e sia paste special...values nella colonna C o semplicemente incollare nel blocco note.

5

Si potrebbe utilizzare un comando sed come questo:

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

Questo sarà solo tirare fuori 12 caratteri in gruppi di due, e li sputare sul retro con i due punti in mezzo. Puoi anche provare un pattern più semplice come s/(\ w \ w)/\ 1:/g, anche se questo ti lascerà con due punti in più alla fine di ogni indirizzo.

+0

Mi picchia! In riferimento alla tua ultima sentanza, potresti quindi utilizzare un altro comando sed per rimuovere i due punti finali e potrebbe ancora essere più breve. – SingleNegationElimination

+0

Non tutte le versioni di "sed" supportano "\ w" per indicare un carattere di parola. Maggiore precisione nella corrispondenza ('[0-9a-fA-F]') renderebbe preferibile la soluzione iterativa. –

+0

Personalmente, probabilmente lo farò in Perl, ma devo forzare il modo decente e semplice di farlo con Regex. perl -e "while (<>) {$ _ = ~ s/(\ w {2})/$ 1:/g; s /: $/$ /;}" .. Penso che lo si farebbe . –

2

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

Questo dovrebbe aiutare a OpenOffice

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

Qui è in excel, ho usato la tua risposta sopra e costruito fuori di esso, grazie

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

Ecco un esempio di PowerShell rapida:

$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 

Grazie Jonathan Walz! Ha funzionato come un FASCINO!

0

ho usato il seguente per aggiungere indirizzo MAC due punti a una tabella HTML esistente in 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

soluzione di Matt con Notepad ++, ma messo a punto per le linee di cambiamento solo che (solo) contengono un indirizzo MAC:

TROVA: ^(..)(..)(..)(..)(..)(..)$

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

Problemi correlati