Я пытаюсь заменить несколько слов в файле с помощью 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
Попробуйте-аутов
Я могу получить следующий вывод, используя 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
как файл и пытается работать над ним ..
shell
shell-script
text-processing
sed
JigarGandhi
источник
источник
sed - i 's/Some\(.*\)item/any\1stuff/' file
Ответы:
В зависимости от версии
sed
вашей системы вы можете сделатьЗдесь вам не нужен
g
после косой черты вs
команде, так как вы делаете только одну замену на строку.В качестве альтернативы:
-i
Опция указываетsed
редактировать файлы на месте; если сразу после этого есть символы,-i
тоsed
резервная копия исходного файла и использует эти символы в качестве расширения файла резервной копии. Например,или
будет изменять
file
, сохраняя оригинал вfile.bak
.Конечно, в Unix (или Unix-подобной) системе мы обычно используем «~» вместо «.bak», поэтому
источник
-i
. Такsed -i '' 's/a/b/;s/c/d/' file
илиsed -i .back 's/a/b/;s/c/d/'
илиsed -i.back 's/a/b/;s/c/d/'
там. Другиеsed
реализации обычно не поддерживают-i
.-i
.sed -i 's/$username = "root"/$username = "newuser"/; s/$password = "password"/$password = "passwd"/; s/$dbname="handicraftstore"/$dbname="handicraft"' Web/database.php
Результатыsed: -e expression #1, char 141: unterminated
'команда`s
команда пропускает свой финал/
.Вы можете связать выражения sed вместе с ";"
источник
Несколько выражений с использованием нескольких
-e
параметров:или вы можете использовать только один:
Вы должны указать расширение для файла резервной копии, так как при некоторой реализации
sed
, такой как OSX sed , не работает с пустым расширением (необходимо использоватьsed -i ''
для переопределения исходных файлов).источник
Вы можете использовать Vim в режиме Ex:
%
выбрать все строкиs
заменаx
сохранить и закрытьисточник