sed с множественным выражением для аргумента на месте

Я пытаюсь заменить несколько слов в файле, используя sed -i #expression1 #expression2

Файл

Something  123 item1
Something  456 item2
Something  768 item3
Something  353 item4

Выход (желаемый)

anything  123 stuff1
anything  456 stuff2
anything  768 stuff3
anything  353 stuff4

Try-аутов

Я могу получить следующий вывод, используя sed -i в 2 раза.

 sed -i 's/Some/any/g' file
 sed -i 's/item/stuff/g' file

Могу ли я использовать любой возможный способ сделать это как отдельную команду на месте, например

sed -i 's/Some/any/g' -i 's/item/stuff/g' file

Когда я пробовал код выше, он берет s/item/stuff/g в качестве файла и пытается работать над ним.

16 голосов | спросил JigarGandhi 17 WedEurope/Moscow2014-12-17T08:51:55+03:00Europe/Moscow12bEurope/MoscowWed, 17 Dec 2014 08:51:55 +0300 2014, 08:51:55

3 ответа


10

Вы можете связать sed выражения вместе с ";"

%sed -i 's/Some/any/g;s/item/stuff/g' file1
%cat file1
anything  123 stuff1
anything  456 stuff2
anything  768 stuff3
anything  353 stuff4
ответил Ian McGowan 17 WedEurope/Moscow2014-12-17T08:55:30+03:00Europe/Moscow12bEurope/MoscowWed, 17 Dec 2014 08:55:30 +0300 2014, 08:55:30
5

Несколько выражений с использованием нескольких опций -e:

sed -i.bk -e 's/Some/any/g' -e 's/item/stuff/g' file

или вы можете использовать только один:

sed -i.bk -e 's/Some/any/g;s/item/stuff/g' file

Вам следует предоставить расширение для файла резервной копии, поскольку, когда некоторая реализация sed, например OSX sed не работает с пустым расширением (вы должны использовать sed -i '', чтобы переопределить исходные файлы).

ответил cuonglm 17 WedEurope/Moscow2014-12-17T08:55:25+03:00Europe/Moscow12bEurope/MoscowWed, 17 Dec 2014 08:55:25 +0300 2014, 08:55:25
1

Вы можете использовать Vim в режиме Ex:

 ex -sc '%s/Some/any/|%s/item/stuff/|x' file
  1. % выберите все строки

  2. s заменить

  3. x сохранить и закрыть

ответил Steven Penny 17 AMpSun, 17 Apr 2016 06:00:57 +030000Sunday 2016, 06:00:57

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132