0

我有一个名为 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

我想将第四列的所有值 17 替换为 25。所以我尝试了以下命令:

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

4

1 回答 1

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

于 2013-02-04T22:54:34.527 回答