Solución:
Cita sed
códigos con comillas dobles:
$ sed "s/ones/one's/"<<<"ones thing"
one's thing
No me gusta escapar de los códigos con cientos de barras invertidas, me duelen los ojos. Normalmente lo hago de esta manera:
$ sed 's/ones/onex27s/'<<<"ones thing"
one's thing
Un truco es usar la concatenación de cadenas de shell de cadenas adyacentes y escapar de la cita incrustada usando el escape de shell:
sed 's/ones/two'''s/' <<< 'ones thing'
two's thing
Hay 3 cadenas en la expresión sed, que luego el caparazón une:
sed 's/ones/two'
'
's/'
¡Espero que ayude a alguien más!
Simplemente use comillas dobles en el exterior del comando sed.
$ sed "s/ones/one's/" <<< 'ones thing'
one's thing
También funciona con archivos.
$ echo 'ones thing' > testfile
$ sed -i "s/ones/one's/" testfile
$ cat testfile
one's thing
Si tienes soltero y comillas dobles dentro de la cadena, eso también está bien. Simplemente escapa de las comillas dobles.
Por ejemplo, este archivo contiene una cadena con comillas simples y dobles. Usaré sed para agregar una comilla simple y eliminar algunas comillas dobles.
$ cat testfile
"it's more than ones thing"
$ sed -i "s/"it's more than ones thing"/it's more than one's thing/" testfile
$ cat testfile
it's more than one's thing