2013-04-29 5 views
0

Я хочу, чтобы заменитьЗаменить шаблон в существующей линии с использованием СЭД

/fdasatavol/ankit 

в

/fdasatavol_sata/ankit 

Может кто-нибудь помочь мне в этом?

+0

Основные «эхо»/fdasatavol/ankit »| sed 's/fdasatavol/fdasatavol_sata /' 'будет работать, но мне кажется, что вы хотите нечто более общее. Покажите нам, что вы пробовали. – fedorqui

ответ

1

писать в новый файл (без изменения file1):

sed 's/fdasatavol/fdasatavol_sata/g' file1 > file2 

или заменить в исходном файле:

sed -i 's/fdasatavol/fdasatavol_sata/g' file1 
+0

это ударит по всем случаям fdasatavol, которые могут включать в себя других, не желающих, которые имеют другой контекст. – UpAndAdam

1

Это заменит каждое вхождение fdasatavol с fdasatavol_sata:

sed 's/fdasatavol/&_sata/g' 

Если у вашего ввода есть fdasatavol, которые не являются в /fdasatavol/ankit и вы не хотите, чтобы заменить их потом использовать:

sed '[email protected]/fdasatavol/[email protected]/fdastatavol_sata/[email protected]' 

Примечание: Вы можете использовать любой символ, как СЕПГ delimilter для Aviod путаницы с parrtern contiaing /. sed печатает до stdout по умолчанию, если вы довольны изменениями, произведенными sed, вы можете использовать опцию -i для хранения обратно к файлу.

sed -i 's/fdasatavol/&_stat/g' file 
+0

Опоры (и +1) для указания более безопасного использования с использованием всего шаблона, чтобы избежать изменения других частей файла – UpAndAdam

Смежные вопросы