2011-07-12 53 views
3

替換字符串我有一個文件包含若干行,每行有像SED與條件

2011-07-10 condition hhh aaa: value bbb 
2011-07-10 condition ccc aaa: value bbb 

我想用SED找到字符串值,這是之間的格式爲「AAA」和「BBB 「,並根據字符串跟隨條件爲ccc的條件替換爲」gotit「。和sed後,該文件將成爲

2011-07-10 condition hhh aaa: value bbb 
    2011-07-10 condition ccc aaa: gotit bbb 

回答

5

鑑於我有限的SED /正則表達式的知識:

sed 's/\(condition ccc.*aaa: \).*\(bbb$\)/\1gotit\2/' file 
+0

對不起,我沒有說清楚,在ccc和aaa之間,還有一些其他的文字,它j ust ccc必須出現在這一行。 – jasonfungsing

+4

夠公平的,試試這個吧:'sed's/\(condition ccc。* aaa:\)。* \(bbb $ \)/ \ 1gotit \ 2 /'file' –

2

繼承人更符合邏輯:

sed '/ccc/{ s/\(.*aaa: \).*\(bbb\)/\1gotit\2/g }' inputfile 

sed只包含ccc線運行