2011-12-02 215 views
1

我希望能夠替換文件中的一行文本,但不知道如何使用sed執行此操作。使用sed替換僅符合特定條件的行中的文本

舉例來說,如果我有一個屬性文件:

food.type=apple 
food.color=red 

我希望能夠搜索的類別(即food.type)並更換=後的文本。 即

food.type=banana 
food.color=yellow 

任何幫助非常感謝。謝謝!

編輯:對不起,讓我補充一些額外的說明。如果我不知道food.type後面是什麼文字怎麼辦?它可以是任何東西,一個'蘋果',一個'香蕉'等......是否仍然可以在=之後搜索和替換文本?

回答

2

可能會有輕微的東西更優雅,但你會做這樣的事情:

sed '/^food.type/ s/=.*$/=banana/' 

那就會發現,與food.type啓動,然後線取代了平等的,無論跟隨它=香蕉。不只是現在"food.type"

+0

對不起,我在上面的編輯中對我的問題添加了一些額外的說明。 – user459811

+0

我的回答和yi_H都應該包括你。它只是尋找food.type =然後任何東西。 –

1
sed 's/food\.type=.*/food.type=banana/' 
+0

對不起,我增加了一些額外的澄清我的問題在編輯以上。 – user459811

+0

咦?這不會搜索香蕉。它取代了香蕉。 –

1

去,回去參考

sed 's/\(food.type=\).*/\1banana/' 
1

(和更安全的:)):

$ sed -n 's/\([a-zA-Z]*\.[a-zA-Z]*=\).*$/\1banana/' filename