linux - 如何使用 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
有更好的主意吗?
解决方案
使用 awk 可能更容易:
awk '{sub("2000000",2000000-(100000*c++))}1' file
第一行没有定义计数器c
,因此数字不会改变。在下一行,计数器增加,值减少。
推荐阅读
- python - pandas read_csv 在 Mac OS 上通过 cron 运行时不起作用
- android - 在 Flutter 应用程序中使用 android.hardware.usb
- tensorflow - Tensor2tensor:我的自定义问题从未注册过注册表问题
- c# - 如何在单个应用程序中处理多个域?ASP.net core 3.0(剃须刀页面,天蓝色)
- javascript - 在firebase中注册之前检查电子邮件是否是真实的
- git - 输入“git remote -v”时没有响应
- spring-boot - JPQL 查询/JPA/Spring boot 更新多对多表的最佳实践
- javascript - 从 React 中的参数获取价值
- html - 如何在兄弟图像元素周围包装两个文本元素
- javascript - 带有渲染组件的 React Router 层次结构