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 ...