你如何用sed替换匹配的第一行?

时间:2015-05-21 18:03:10

标签: bash sed

我目前正在尝试替换以下文件中的行:

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

我如何只替换第一个" / home / music"不说它是什么线? 谢谢!

2 个答案:

答案 0 :(得分: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 :(得分:1)

在sed:

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

这从第0行开始,在找到/ home / music时停止,然后用/ foo / bar替换/ home / music。在" s_ / home / music_ / foo / bar _"部分,我已经将正常分隔符,斜杠更改为下划线,以便我可以在正则表达式中使用斜杠。