2009-06-29 21 views

Respuesta

1

Si es una cosa de una sola vez, ¿por qué no utilizar emacs con una macro de teclado?

youtube link

7

Usted podría conseguir Notepad ++ y hacer una búsqueda y reemplazar con expresiones regulares como búsqueda de (..) y reemplazarlo con \ 1:

+0

¿Por qué sería '\ 1-' insertar dos puntos? –

+0

Woops lo siento debería ser \ 1: – Matt

5

Es tal vez una exageración, pero me gustaría utilizar Excel. Pegar su direcciones MAC en la columna A y la fórmula en la columna B:

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

A continuación, puede copy la columna B, y, o bien paste special...values en la columna C o simplemente pegar en el Bloc de notas.

5

Se puede usar un comando sed como este:

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

Esto simplemente sacar 12 caracteres en grupos de dos, y escupir de vuelta a cabo con dos puntos en el medio. También puedes probar un patrón más simple como s/(\ w \ w)/\ 1:/g, aunque esto te dejará con dos puntos al final de cada dirección.

+0

Batirme a ella! En lo que respecta a tu última sesión, podrías usar otro comando sed para quitar el colon posterior, y aún podría ser más corto. – SingleNegationElimination

+0

No todas las versiones de 'sed' admiten '\ w' para indicar un carácter de palabra. Una mayor precisión en la coincidencia ('[0-9a-fA-F]') haría preferible la solución iterativa. –

+0

Personalmente, probablemente lo haría en Perl, pero tengo que revalorizar la forma decentemente simple de Regex de hacerlo. perl -e "while (<>) {$ _ = ~ s/(\ w {2})/$ 1:/g; s /: $/$ /;}" .. Creo que uno lo haría . –

2

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

Esto debería ayudar en OpenOffice

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

Aquí está en Excel, utilicé su respuesta arriba y construido fuera de él, gracias

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

Aquí está un ejemplo PowerShell rápida:

$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 

Gracias Jonathan Walz! ¡Trabajado como un encanto!

0

He utilizado el siguiente para agregar la dirección MAC de los dos puntos de una tabla HTML existente en 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

solución de Matt con el Notepad ++, pero ajustado para sólo las líneas de cambio que (sólo) contienen una dirección MAC:

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

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

Cuestiones relacionadas