una texto sustituir subcadena script reemplazar para extraer especiales eliminar comando caracteres cadena linux unix sed

linux - texto - sed con cadena literal-no archivo de entrada



sed ''s///g'' (3)

Funciona como usted quiere:

echo "A,B,C" | sed s/,//',/'/g

Esto debería ser fácil: quiero ejecutar sed contra una cadena literal, no un archivo de entrada. Si se pregunta por qué, se trata, por ejemplo, de editar valores almacenados en variables, no necesariamente datos de texto.

Cuando lo hago:

sed ''s/,/'',''/g'' "A,B,C"

donde A, B, C es el literal que quiero cambiar a A '','' B '','' C

yo obtengo

Can''t open A,B,C

Como si pensara que A, B, C es un archivo.

Intenté conectarlo para hacer eco:

echo "A,B,C" | sed ''s/,/'',''/g''

Recibo un aviso.

¿Cuál es la forma correcta de hacerlo?


Mi versión usa variables en un script bash:

Encuentre cualquier barra invertida y reemplace con barras diagonales:

input="This has a backslash //" output=$(echo "$input" | sed ''s,//,/,g'') echo "$output"


Tienes un conflicto de una sola cita, así que usa:

echo "A,B,C" | sed "s/,/'',''/g"

Si usa bash , puede hacerlo también ( <<< es una here-string ):

sed "s/,/'',''/g" <<< "A,B,C"

pero no

sed "s/,/'',''/g" "A,B,C"

porque sed espera archivo (s) como argumento (s)

EDITAR :

si usas ksh o cualquier otro:

echo string | sed ...