GNU sed:全球替代失败

GNU sed:全球替代失败,sed,Sed,我有一个名为test.csv的文件,其中包含以下内容: 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 如您所见,只修改了最后一行,而没

我有一个名为test.csv的文件,其中包含以下内容:

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/“
我有我想要的输出。为什么会这样?

您的sed线路不工作的原因是:

如果你仔细检查你的sed线路

cat test.csv | sed -r 's/(([1-9]+,){3})17/\125/g' (your sed line)
您有
[1-9]
而不是
[0-9]
,请修复该问题,然后重试,它应该适合您


此外,不需要
cat文件。您可以执行
sed'…'文件

是的,完全正确!谢谢你,肯特,真是个错误……:)