2011-10-03 157 views
33

Tengo un archivo llamado file.txt. Tiene una serie de comillas dobles en todo. Quiero eliminarlos a todos.Cómo usar sed para eliminar todas las comillas dobles dentro de un archivo

He tratado sed 's/"//g' file.txt

He tratado sed -s "s/^\(\(\"\(.*\)\"\)\|\('\(.*\)'\)\)\$/\\3\\5/g" file.txt

Ni he trabajado.

¿Cómo puedo eliminar todas las comillas dobles en el archivo?

+0

Su primer intento debe trabajar en un archivo ASCII. Tal vez el archivo en el que estás trabajando contiene Unicode "en su lugar? – holygeek

Respuesta

76

sólo tiene que escapar de la cita en el primer ejemplo:

$ sed 's/\"//g' file.txt 
+2

Ejecuté esto, en la pantalla voló por las miles de entradas y las citas se habían ido. Sin embargo, dentro del archivo.txt, las citas eran allí todavía. – MRTim2day

+6

Sí, 'sed' dirige la salida a la salida estándar por defecto y no toca el archivo de entrada. Si desea que la salida se guarde en un archivo, haga' sed 's/\ "// g' file.txt> file_new.txt' y luego cuando esté satisfecho con file_new.txt, elimine el archivo anterior y cambie el nombre del nuevo. – Vicky

+7

O si su 'sed' admite la opción' -i', eso debería permitirle reemplazar el archivo con el archivo editado también. – tripleee

2

Trate anteponiendo la comillas dobles con una barra invertida en su expresssion:

sed 's/\"//g' [file name] 
+1

Ejecuté esto, en la pantalla voló por las miles de entradas y las comillas se habían ido. Sin embargo, dentro del archivo.txt, las comillas todavía estaban allí. – MRTim2day

+0

Corro esto con el archivo csv y todos los datos se han ido. Me cansé un par de veces con el mismo resultado. – Katarzyna

3

comentario adicional. Si esto funciona:

sed 's/\"//g' infile.txt > outfile.txt 

(sin embargo con GNU lotes sed, se acaba de imprimir en pantalla)

En el lote de secuencias de comandos (GNU SED), esto era necesario:

sed 's/\x22//g' infile.txt > outfile.txt 
24

¿Seguro necesitas usar sed? ¿Qué tal:

tr -d "\"" 
+0

¿Qué sucede si se deben eliminar todos los tipos de citas? ¿Y si necesitara trabajar con Unicode también? –

3

Para sustituir en su lugar también se puede hacer:

sed -i '' 's/\"//g' file.txt 

o en Linux

sed -i 's/\"//g' file.txt 
Cuestiones relacionadas