/ / In Bash come stamperesti / useresti una barra rovesciata seguita da una pipe? [duplicato] - bash, tr

In Bash come stamperesti / useresti una barra rovesciata seguita da una pipe? [duplicato] - bash, tr

Se ho una stringa che è: get schwifty e voglio finire con get|schwifty, la prima cosa che vorrei provare è:

echo "get schwifty" | tr " " "|"

questo però fallisce e restituisce solo la pipa. Se provo a usare più backslash succede il contrario, e ottengo solo il backslash e non il pipe.

Come posso finire get|schwifty?

risposte:

6 per risposta № 1

tr può essere utilizzato solo per sostituire un carattere con un altro (o eliminare caratteri dall'input).

tr " " "|" sostituisce spazi con pipe perché le virgolette fanno in modo che bash interpreti il ​​backslash come carattere di escape prima di richiamare invocando tr (come tr " " "|"). Nota che il backslash è anche un carattere di escape per tr (vedi il tr pagina man).

Puoi usare sed anziché:

echo "get schwifty" | sed -e "s/ /\|/g"

In alternativa, puoi usare una bash sostituzione del modello:

s="get schwifty"
echo "${s/ /\|}"