2012-08-09 15 views
7

estoy usando grep en TextWrangler para encontrar cadenas de este tipo:buscar/reemplazar el uso de grep y Textwrangler

4,600.00 

la palabra de mi expresión regular es el siguiente:

\d.\d{3}.\d{2} 

que parece encontrar la cuerdas correctamente Me gustaría reemplazar la cadena 4,600.00 con 4600.00 ya que deseo guardar los datos en un archivo .csv. ¿Cómo elimino la coma de cada número que encuentro?

+0

Supongo que su línea contiene no solo este número sino algo así como "foo, bar, bla, 4,600,000.00, algunos, más", sin embargo, ¿qué pasa si la línea es "foo, bar, bla, 999,600,000.00, ..." cómo puede ¿Dices que 999 y 600000.00 son dos columnas? ¿Hay alguna otra regla en su archivo de entrada? – Kent

+0

Los números se mantienen por debajo de 100,000, así que solo necesito encontrar ', 000.00'. No estoy claro cuál es el código de reemplazo; Intenté '\ d \ d {3}. \ D {2} '. – djq

Respuesta

12

Buscar: (\d{1,3}),(\d{1,3})\.(\d{1,2})

Reemplazar: \1\2.\3

Obras en TextWrangler.

1

awk oneliner:

awk --re-interval '{x=gensub(/([0-9]{1,3}),([0-9]{3}\.[0-9]{2})/,"\\1\\2","g");print x}' file 

prueba:

kent$ awk --version|head -1 
GNU Awk 3.1.6 

kent$ echo "foo,bar,blah,46,000.00,some,more"|awk --re-interval '{x=gensub(/([0-9]{1,3}),([0-9]{3}\.[0-9]{2})/,"\\1\\2","g");print x}' 
foo,bar,blah,46000.00,some,more 
+0

la verdadera pregunta aquí fue para TextWrangler, no para la línea de comando –

0

Una forma usando sed:

sed -r 's/([0-9]{1,3}),([0-9]{3}\.[0-9]{2})/\1\2/g' file.txt 

Se podría añadir la bandera -i para escribir los cambios directamente en el archivo.