estoy intentando
grep searchterm myfile.csv | sed 's/replaceme/withthis/g'
y conseguir
unknown option to `s'
¿Qué estoy haciendo mal?
Editar:
Según los comentarios, el código es realmente correcto. Mi código completo se parecía a lo siguiente
grep searchterm myfile.csv | sed 's/replaceme/withthis/g'
# my comment
Y parece que, por alguna razón, mi comentario se introdujo como entrada en sed. Muy extraño.

/inreplacemeowiththis. Proveedores:'s#replaceme#withthis#g'.Respuestas:
usa la opción --expression
grep searchterm myfile.csv | sed --expression='s/replaceme/withthis/g'fuente
grep 'x' y | sed 'z'se puede refactorizar ased '/x/z' y. Véase también uso inútil degrep.use "-e" para especificar la expresión sed
cat input.txt | sed -e 's/foo/bar/g'fuente
sedlee desde stdin si no hay un archivo de entrada presente.-enecesario? Funciona sin-e. Me pregunto ¿cuál es el propósito de usar-e? Gracias.echo foo | sed 's/foo/bar/g'funciona sin-esalidabar. Así que debo haber perdido su pregunta.-esi solo tiene una única declaración de script. Si tiene dos, puede decirsed -e '/foo/!d' -e 's//bar/g'osed 's/foo!d;s//bar/g'(o de manera equivalente, con una nueva línea en lugar de un punto y coma).Para realizar
sedcapturas desde stdin, en lugar de desde un archivo, debe usar-e.Me gusta esto:
curl -k -u admin:admin https://$HOSTNAME:9070/api/tm/3.8/status/$HOSTNAME/statistics/traffic_ips/trafc_ip/ | sed -e 's/["{}]//g' |sed -e 's/[]]//g' |sed -e 's/[\[]//g' |awk 'BEGIN{FS=":"} {print $4}'fuente
Si está tratando de hacer una actualización in situ de texto dentro de un archivo, esto es mucho más fácil de razonar en mi mente.
grep -Rl text_to_find directory_to_search 2>/dev/null | while read line; do sed -i 's/text_to_find/replacement_text/g' $line; donefuente
vi myfile.csv:%s/replaceme/withthis/:wqy presioneEnterAhora tendrá el nuevo patrón en su archivo.
fuente