it-swarm.com.de

Wie kann ich von der Standardeingabe lesen?

Ich versuche

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

und bekommen

unknown option to `s'

Was mache ich falsch?

Bearbeiten:

Gemäß den Kommentaren ist der Code tatsächlich korrekt. Mein vollständiger Code ähnelte ungefähr dem folgenden

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

Und es scheint, dass aus irgendeinem Grund mein Kommentar als Eingabe in sed eingespeist wurde. Sehr eigenartig.

74
deltanovember

verwenden Sie die Option --expression

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

verwenden Sie "-e", um den sed-Ausdruck anzugeben

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

Um sed von stdin abzufangen, anstatt von einer Datei, sollten Sie -e.

So was:

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

Wenn Sie versuchen, einen Text in einer Datei direkt zu aktualisieren, ist dies meiner Meinung nach viel einfacher nachzuvollziehen.

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