Подтвердить что ты не робот

Как мне заставить sed читать со стандартного ввода?

Я пытаюсь

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

и получив

unknown option to `s'

Что я делаю неправильно?

Edit:

В соответствии с комментариями код действительно правильный. Мой полный код похож на следующий

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

И кажется, что по какой-то причине мой комментарий подавался как вход в sed. Очень странно.

4b9b3361

Ответ 1

используйте параметр --expression

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

Ответ 2

используйте "-e" для указания sed-выражения

cat input.txt | sed -e 's/foo/bar/g'

Ответ 3

Чтобы сделать sed catch из 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}'

Ответ 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

Ответ 5

  • Откройте файл с помощью vi myfile.csv
  • Нажмите Escape
  • Тип :%s/replaceme/withthis/
  • Введите :wq и нажмите Enter

Теперь у вас будет новый шаблон в вашем файле.