2015-05-21 2 views
1

В настоящее время я пытаюсь заменить строки в следующем файле:Как вы заменяете первую строку, связанную с sed?

Music_location = /home/music 
Music_location = /home/music 
Pictures = /home/pictures 

Как только заменить первый «/ дом/музыка», не говоря, что линия это на? Спасибо!

+0

Возможный дубликат [Как использовать sed для замены только первого вхождения в файл?] (Http://stackoverflow.com/questions/148451/how-to-use-sed-to-replace-only-the -first-entry-in-a-file) – rahul

+0

Этот вопрос уже задан и указан здесь - https://stackoverflow.com/questions/148451/how-to-use-sed-to-replace-only-the- first-creation-in-a-file – rahul

ответ

2

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

awk '!p{sub(/\/home\/music/, "/foo/bar"); p=1} 1' file 
Music_location = /foo/bar 
Music_location = /home/music 
Pictures = /home/pictures 
1

В СЭД:

sed '0,/home\/music/s_/home/music_/foo/bar_' foo.txt 

Это начинается в строке 0, останавливается, когда он находит/дома/музыка, а затем заменяет/дома/музыка с/foo/bar. В части «s_/home/music_/foo/bar_» ​​я изменил обычный разделитель, косую черту, на подчеркивание, чтобы я мог использовать слэши в своем регулярном выражении.

+0

Убедитесь, что вы оставили заметку об использовании '_' в качестве альтернативных разделителей. Большинство будет знать, но человек, которому вы помогаете, может остаться почесывающим голову. –

+0

Спасибо, я добавил, что – bkmoney

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