2013-02-04 44 views
0

我有一個名爲test.csv,內容如下文件:GNU sed的:全局替換失敗

T1,T2,T3,T4 
10,2,3,17 
10,2,5,14 
10,2,2,16 
15,1,17,15 
12,1,9,25 

我想對25的第四列替換所有的值17所以,我想下面的命令:

cat test.csv | sed -r 's/(([1-9]+,){3})17/\125/g' 
T1,T2,T3,T4 
10,2,3,17 
10,2,5,14 
10,2,2,16 
15,1,17,15 
12,1,9,25 

正如你所看到的,只有最後一行被修改,但不是第二行。

但是,如果我這樣做:cat test.csv | sed -r "s/([0-9]+,[0-9]+,[0-9]+,)17/\125/"我有我想要的輸出。這是爲什麼?

回答

1

您的sed線沒有工作的原因是:

如果你仔細檢查你的sed線,

cat test.csv | sed -r 's/(([1-9]+,){3})17/\125/g' (your sed line) 

你有[1-9][0-9],修復,然後再試一次,它應該工作您。

也不要求cat file。你可以做sed '...' file

+0

是的,確切的!謝謝肯特,多麼錯誤...... :) – Kaeros