2012-02-19 14 views
5

Soy nuevo a shell scripting y utiliza el código siguiente a doble espacio un archivo (archivo de entrada es un parámetro):archivo de doble espacio usando sed en shell script

sed G $input_file >> $input_file 

El problema es, si el contenido de mi archivo original es:

Hi 
My name is 

mi archivo a doble espacio es:

Hi 
My name is 
Hi 

My name is 

¿hay algo más que necesito agregar en el script de shell para que mi archivo sólo será:

Hi 

My name is 

Respuesta

5

Estás usando el operador de adición (>>), que añade al archivo en cuestión. Dicho esto, generalmente no se puede operar y enviar al mismo archivo con > en bash, tampoco. Para el caso específico de sed 's, puede utilizar la opción -i (dependiendo de la versión y plataforma):

sed -i G $input_file 

Eso debería editar el archivo 'en su sitio', si su versión cuenta con esa opción. Digo "in situ" porque estoy bastante seguro de que realmente crea un nuevo archivo y lo vuelve a colocar encima del primero (el inodo es diferente). Si no, saldrías a un archivo separado, y moverías el archivo:

sed G ${input_file} > ${input_file}.bak 
mv ${input_file}.bak ${input_file} 
+0

Había usado (>) antes pero no funcionó, ¡gracias por aclararme esto! – jbisa

Cuestiones relacionadas