首页 > 解决方案 > 如何使用 sed 替换匹配的列表

问题描述

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

例子.txt:</p>

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

我想要这样的结果:</p>

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

有更好的主意吗?

标签: linuxsed

解决方案


使用 awk 可能更容易:

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

第一行没有定义计数器c,因此数字不会改变。在下一行,计数器增加,值减少。


推荐阅读