Как мне получить sed для чтения со стандартного ввода? - PullRequest
73 голосов
/ 03 апреля 2012

Я пытаюсь

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.Очень странно.

Ответы [ 5 ]

96 голосов
/ 03 апреля 2012

используйте опцию --expression

grep searchterm myfile.csv | sed --expression='s/replaceme/withthis/g'
23 голосов
/ 04 апреля 2012

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

cat input.txt | sed -e 's/foo/bar/g'
5 голосов
/ 23 июня 2016

Чтобы sed ловить из стандартного ввода, а не из файла, вы должны использовать -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}'
0 голосов
/ 10 мая 2019

Если вы пытаетесь выполнить обновление текста в файле на месте, об этом гораздо проще подумать.

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 голосов
/ 03 апреля 2012
  1. Откройте файл, используя vi myfile.csv
  2. Нажмите Побег
  3. Тип :%s/replaceme/withthis/
  4. Введите :wq и нажмите Введите

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...