¿Qué quieres decir con un texto? un archivo o algo de texto en un archivo? echo "foo.foo.foo" | sed 's/\./ /g'
Zanna
1
@KDG i) necesita crear una cuenta separada para cada sitio de SE, pero si usa las mismas credenciales, las cuentas se vincularán. ii) Si bien este sitio está limitado exclusivamente a Ubuntu, no veo nada aquí que sea una prueba irrefutable de que no está utilizando Ubuntu, por lo que tampoco tengo motivos para cerrarlo.
Terdon
Respuestas:
20
Puede hacer una función y agregarla al final de su ~/.bashrc, por ejemplo:
nodot() { echo "$1" | sed 's/\./ /g' ; }
ejemplo de uso:
$ nodot foo.foo.foo
foo foo foo
También puede usar esta función en zsh, solo agregue a su ~/.zshrclugar.
consejos geniales nunca antes oyeron hablar de "tr"
KDG
66
tren realidad está destinado exactamente para este propósito. sedEs exagerado.
Max Ried
1
+1 precisamente para tr, que es una herramienta muy útil que muchas personas no parecen conocer por alguna razón. Mucho más simple que sedpara convertir clases enteras de personajes.
esponjoso
55
Nunca lo escriba en 'C' si puede hacerlo en 'awk'; Nunca lo hagas en 'awk' si 'sed' puede manejarlo; Nunca use 'sed' cuando 'tr' pueda hacer el trabajo; Nunca invoque 'tr' cuando 'cat' sea suficiente; Evite usar 'gato' siempre que sea posible. --Las leyes de programación de Taylor
Ross Presser
1
Buena respuesta. Esta respuesta debe ser aceptada.
SuB
24
Usando bash puro:
bash-3.2$ a='a.a.a'
bash-3.2$ echo "${a/./ }"
a a.a
bash-3.2$ echo "${a//./ }"
a a a
split_dot()
{
string="$1"
if set | grep -q "IFS";
then
ifs_unset="false"
old_ifs=$IFS
else
ifs_unset="true"
fi
IFS="."
echo $string
if [ "$ifs_unset" == "true" ];
then
unset IFS
else
IFS=$old_ifs
fi
}
Restablecer IFSes más complicado que simplemente guardarlo en una variable y restaurar el valor. Un desarmado IFSy un vacío IFStienen un comportamiento diferente, por lo que debe verificar si está desarmado o simplemente vacío, en caso de que estuviera vacío antes.
Muru
55
Las funciones no se ejecutan en subcapas. Solo algunas variables tienen un alcance diferente (los parámetros posicionales, y algunas otras se enumeran en gnu.org/software/bash/manual/html_node/Shell-Functions.html ). Por eso tenemos la localpalabra clave.
muru
3
Entonces, si OP se había desarmado IFSpor alguna razón anteriormente, esta función lo configuraría como vacío, lo que tiene un comportamiento diferente.
muru
2
@fedorqui desafortunadamente incluso eso no funcionará; dado que el valor IFS se establece demasiado tarde para que se analice la declaración actual. Tendría que usar una subshell (IFS=.; echo ...). Dado que esta respuesta utilizaba una función, Serg podría simplemente cambiar los paréntesis a paréntesis y no preocuparse por restablecer IFS en absoluto
muru
2
@ fedorqui puede encontrar interesante mi pregunta similar sobre U&L: unix.stackexchange.com/q/264635/70524 (Gilles siempre da muy buenas respuestas)
echo "foo.foo.foo" | sed 's/\./ /g'
Respuestas:
Puede hacer una función y agregarla al final de su
~/.bashrc
, por ejemplo:ejemplo de uso:
También puede usar esta función en zsh, solo agregue a su
~/.zshrc
lugar.fuente
Puede usar el comando tr para convertir caracteres.
fuente
tr
en realidad está destinado exactamente para este propósito.sed
Es exagerado.tr
, que es una herramienta muy útil que muchas personas no parecen conocer por alguna razón. Mucho más simple quesed
para convertir clases enteras de personajes.Usando bash puro:
fuente
Usando
Internal Field Separator (IFS)
variable:Esto se puede poner muy bien en una función:
Y corre así:
fuente
IFS
es más complicado que simplemente guardarlo en una variable y restaurar el valor. Un desarmadoIFS
y un vacíoIFS
tienen un comportamiento diferente, por lo que debe verificar si está desarmado o simplemente vacío, en caso de que estuviera vacío antes.local
palabra clave.IFS
por alguna razón anteriormente, esta función lo configuraría como vacío, lo que tiene un comportamiento diferente.(IFS=.; echo ...)
. Dado que esta respuesta utilizaba una función, Serg podría simplemente cambiar los paréntesis a paréntesis y no preocuparse por restablecer IFS en absolutoAlguien se perdió
awk
/perl
/python
/go
:fuente
Uno puede usar
xargs
también. Aquí hay una línea usandoxargs
fuente