web-dev-qa-db-fra.com

Comment puis-je obtenir sed pour lire à partir de l'entrée standard?

J'essaie

grep searchterm myfile.csv | sed 's/replaceme/withthis/g'

et obtenir

unknown option to `s'

Qu'est-ce que je fais mal?

Modifier:

Selon les commentaires, le code est en fait correct. Mon code complet ressemblait à quelque chose comme ce qui suit

grep searchterm myfile.csv | sed 's/replaceme/withthis/g'
# my comment

Et il semble que, pour une raison quelconque, mon commentaire ait été incorporé dans sed. Très étrange.

74
deltanovember

utiliser l'option --expression

grep searchterm myfile.csv | sed --expression='s/replaceme/withthis/g'
97
Ben Davis

utilisez "-e" pour spécifier l'expression sed

cat input.txt | sed -e 's/foo/bar/g'
24
umläute

Pour que sed attrape à partir de stdin, à la place d'un fichier, vous devez utiliser -e.

Comme ça:

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}'
5
LeoChu

Si vous essayez d'effectuer une mise à jour sur place de texte dans un fichier, il est beaucoup plus facile de raisonner dans mon esprit.

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; done

0
Wes