una txt tabuladores salto quitar principio lineas linea espacios eliminar contar comando borrar blanco archivo bash

bash - txt - sed eliminar salto de linea



¿Cómo eliminar espacios extra en bash? (8)

Aproveche los efectos de división de palabras de no citar su variable

$ HEAD=" how to remove extra spaces " $ set -- $HEAD $ HEAD=$* $ echo ">>>$HEAD<<<" >>>how to remove extra spaces<<<

Si no quieres usar los parámetros posicionales, usa una matriz

ary=($HEAD) HEAD=${ary[@]} echo "$HEAD"

Un efecto secundario peligroso de no citar es que la expansión del nombre de archivo estará en juego. Así que apágalo primero y vuelve a habilitarlo después de:

$ set -f $ set -- $HEAD $ set +f

¿Cómo eliminar espacios extra en la variable HEAD ?

HEAD=" how to remove extra spaces "

Resultado:

how to remove extra spaces


Así es como lo haría con sed:

string='' how to remove extra spaces '' echo "$string" | sed -e ''s/ */ /g'' -e ''s/^ */(.*/) *$//1/'' => how to remove extra spaces # (no spaces at beginning or end)

La primera expresión sed reemplaza cualquier grupo de más de 1 espacio con un solo espacio, y la segunda expresión elimina los espacios al final o al principio.


Este caballo aún no está muerto: ¡sigamos derrotándolo! *

Leer en matriz

Otras personas han mencionado la read , pero como el uso de la expansión sin comillas puede causar expansiones indeseables, todas las respuestas que se usen pueden considerarse más o menos iguales. Podrías hacerlo

set -f read HEAD <<< $HEAD set +f

o podrías hacer

read -a HEAD <<< "$HEAD" HEAD="${HEAD[*]}"

Globos extendidos con expansión de parámetros

$ shopt -s extglob $ HEAD="${HEAD//+( )/ }" HEAD="${HEAD# }" HEAD="${HEAD% }" $ printf ''"%s"/n'' "$HEAD" "how to remove extra spaces"

* En realidad, no se dañó a ningún caballo: esto fue simplemente una metáfora para obtener más de seis respuestas diferentes a una pregunta simple.


La variable echo sin comillas hace lo que quieres:

HEAD=" how to remove extra spaces " echo $HEAD

salida: how to remove extra spaces


Prueba este:

echo '' how to remove extra spaces '' | sed ''s/^ *//g'' | sed ''s/$ *//g'' | sed ''s/ */ /g''

o

HEAD=" how to remove extra spaces " HEAD=$(echo "$HEAD" | sed ''s/^ *//g'' | sed ''s/$ *//g'' | sed ''s/ */ /g'')


Prueba esto:

echo "$HEAD" | tr -s " "

o tal vez quieras guardarlo en una variable:

NEWHEAD=$(echo "$HEAD" | tr -s " ")

Actualizar

Para eliminar los espacios en blanco iniciales y finales, haga esto:

NEWHEAD=$(echo "$HEAD" | tr -s " ") NEWHEAD=${NEWHEAD%% } NEWHEAD=${NEWHEAD## }


Utilizando awk:

$ echo "$HEAD" | awk ''$1=$1'' how to remove extra spaces


echo -e " abc /t def "|column -t|tr -s " "

column -t :

  1. Eliminar los espacios al principio y al final de la línea.
  2. convertir pestañas en espacios

tr -s " " comprimirá múltiples espacios en un solo espacio

para ver la salida, puede usar cat - -A : muestra todos los caracteres espaciales, incluidas las pestañas y la EOL:

echo -e " abc /t def "|cat - -A

salida: abc ^I def $

echo -e " abc /t def "|column -t|tr -s " "|cat - -A

salida: abc def$