我想使用sed替换文本文件,但要替换序列。

example.txt:

1. 2000000
2. 2000000
3. 2000000
4. 2000000


我想要一个类似的结果:

1. 2000000
2. 1900000
3. 1800000
4. 1700000


我有这种肮脏的方式:

for i in {2000000..1700000..-100000}; do sed -i -e "0,/2000000/! {0,/2000000/ s/2000000/$i/}" example.txt; done


还有更好的主意吗?

最佳答案

使用awk可能会更容易:

awk '{sub("2000000",2000000-(100000*c++))}1' file


第一行未定义计数器c,因此编号不会更改。在下一行,计数器增加,而值减小。

关于linux - 如何使用sed替换与列表匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52942079/

10-11 15:43