я стараюсь
grep searchterm myfile.csv | sed 's/replaceme/withthis/g'
и получение
unknown option to `s'
Что я делаю неправильно?
Редактировать:
Согласно комментариям, код действительно правильный. Мой полный код выглядел примерно так:
grep searchterm myfile.csv | sed 's/replaceme/withthis/g'
# my comment
И похоже, что по какой-то причине мой комментарий был введен в sed. Очень странный.
/
inreplaceme
илиwiththis
. Попробуйте:'s#replaceme#withthis#g'
.Ответы:
используйте параметр --expression
grep searchterm myfile.csv | sed --expression='s/replaceme/withthis/g'
источник
grep 'x' y | sed 'z'
можно отремонтироватьsed '/x/z' y
. См. Также бесполезное использованиеgrep
.используйте "-e", чтобы указать выражение sed
cat input.txt | sed -e 's/foo/bar/g'
источник
sed
читает из stdin, если входной файл отсутствует.-e
необходимо? Работает без-e
. Интересно, с какой целью использовать-e
? Благодарю.echo foo | sed 's/foo/bar/g'
работает без-e
вывода, путем выводаbar
. Так что я, должно быть, пропустил его вопрос.-e
ли у вас только один оператор сценария. Если у вас их два, вы можете сказатьsed -e '/foo/!d' -e 's//bar/g'
илиsed 's/foo!d;s//bar/g'
(или, что то же самое, с новой строкой вместо точки с запятой).Чтобы
sed
поймать из stdin, а не из файла, вы должны использовать-e
.Как это:
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}'
источник
Если вы пытаетесь выполнить обновление текста в файле на месте, мне гораздо проще рассуждать об этом.
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
источник
vi myfile.csv
:%s/replaceme/withthis/
:wq
и нажмитеEnterТеперь в вашем файле будет новый узор.
источник