
cuando ingreso lo siguiente
echo "This is for testing" | tr -s [:space:]
Entiendo esto...
This is for testing
Esperaba eliminar los múltiples espacios y solo tener un espacio entre las palabras. No veo lo que estoy haciendo mal.
Respuesta1
En tr -s [:space:]
, el [:space:]
shell tratará lo que no está entre comillas como un globo, y si tiene un archivo que coincide con ese globo (un nombre de archivo con un solo carácter de cualquiera de :
, a
, c
, e
, p
) s
, entonces su shell (probablemente bash) lo expandirá. pegue a ese nombre de archivo:
bash-5.1$ echo tr -s [:space:]
tr -s [:space:]
bash-5.1$ touch c
bash-5.1$ echo tr -s [:space:]
tr -s c
(También podría hacer otras cosas según las opciones del shell).
Entonces, use comillas para que el shell no interprete [:space:]
:
echo "This is for testing" | tr -s '[:space:]'
Respuesta2
A mí me funciona para apretar los espacios, tal vez no funcione para ti porque esos espacios en tu texto de muestra no son realmente espacios.
Podrían ser pestañas
Prueba esto
echo "This is for testing" | tr \\t " "
o, si hay varias pestañas, puede intentar usar
echo "This is for testing" | tr \\t " " | tr -s [:space:]