una saltos renglones quitar que parrafos ocultar los linea espacios espacio entre eliminar dejar como blanco unix sed awk grep

unix - saltos - cómo eliminar los espacios en blanco iniciales de cada línea en un archivo?



eliminar saltos de linea (7)

Tengo un archivo que se ve así:

for (i = 0; i < 100; i++) for (i = 0; i < 100; i++) for (i = 0; i < 100; i++) for (i = 0; i < 100; i++) for (i = 0; i < 100; i++) for (i = 0; i < 100; i++) for (i = 0; i < 100; i++)

Quiero que se vea así (eliminar indentaciones):

for (i = 0; i < 100; i++) for (i = 0; i < 100; i++) for (i = 0; i < 100; i++) for (i = 0; i < 100; i++) for (i = 0; i < 100; i++) for (i = 0; i < 100; i++) for (i = 0; i < 100; i++)

¿Cómo puede hacerse esto (usando sed quizás?)


Aqui tienes:

user@host:~$ sed ''s/^[/t ]*//g'' < file-in.txt

O:

user@host:~$ sed ''s/^[/t ]*//g'' < file-in.txt > file-out.txt


Este código de Perl edita su archivo original:

perl -i -ne ''s/^/s+//;print'' file

El siguiente hace una copia de seguridad antes de editar el archivo original:

perl -i.bak -ne ''s/^/s+//;print'' file

Tenga en cuenta que Perl toma mucho de sed (y awk)


FWIW, si está editando este archivo, probablemente pueda resaltar todas las líneas y usar su botón de deshacer pestaña.

  • En vim, use shift-v para resaltar las líneas, luego presione <<
  • Si está en un Mac, puede usar Atom, Sublime, etc., luego resalte con su mouse y luego presione shift-tab

No estoy seguro de si hay algún requisito de que esto deba hacerse desde la línea de comando. Si es así, entonces: pulgares arriba: ¡a la respuesta aceptada! =)


Para este problema específico, algo como esto funcionaría:

$ sed ''s/^ *//g'' < input.txt > output.txt

Dice que se reemplacen todos los espacios al comienzo de una línea sin nada. Si también quieres eliminar pestañas, cámbialo a esto:

$ sed ''s/^[ /t]+//g'' < input.txt > output.txt

La "s" inicial antes de / significa "sustituto". Los / ''s son los delimitadores de los patrones. Los datos entre los primeros dos son el patrón para hacer coincidir, y los datos entre el segundo y el tercero / son los datos para reemplazarlo. En este caso, lo estás reemplazando por nada. La "g" después de la barra final significa hacerlo "globalmente", es decir, sobre todo el archivo en lugar de solo en la primera coincidencia que encuentre.

Finalmente, en lugar de < input.txt > output.txt puede usar la opción -i que significa editar el archivo "en su lugar". Es decir, no necesita crear un segundo archivo para contener su resultado. Si usa esta opción, perderá su archivo original.


puedes usar awk

$ awk ''{$1=$1}1'' file for (i = 0; i < 100; i++) for (i = 0; i < 100; i++) for (i = 0; i < 100; i++) for (i = 0; i < 100; i++) for (i = 0; i < 100; i++) for (i = 0; i < 100; i++) for (i = 0; i < 100; i++)

sed

$ sed ''s|^[[:blank:]]*||g'' file for (i = 0; i < 100; i++) for (i = 0; i < 100; i++) for (i = 0; i < 100; i++) for (i = 0; i < 100; i++) for (i = 0; i < 100; i++) for (i = 0; i < 100; i++) for (i = 0; i < 100; i++)

ciclo while / read de shell

while read -r line do echo $line done <"file"


sed -e ''s / ^ [/ t] * //'' name_of_file_from_which_you_want_to_remove_space> ''name _file_where_you_want_to_store_output''

por ejemplo: - sed -e ''s / ^ [/ t] * //'' archivo1.txt> salida.txt

Nota:

s /: Sustituir comando ~ reemplazo por patrón (^ [/ t] *) en cada línea direccionada

^ [/ t] *: patrón de búsqueda (^ - inicio de la línea; [/ t] * coincide con uno o más espacios en blanco, incluida la pestaña)

//: Reemplaza (elimina) todos los patrones combinados


sed "s/^[ /t]*//" -i youfile

Advertencia: esto sobrescribirá el archivo original.