awk - 查找匹配项并替换为一系列数字
问题描述
我的文件看起来像:
file1.txt
i0 AAAAAA
AAAAAA
i0 AAAAAA
AAAAAA
i0 AAAAAA
AAAAAA
我想i0
用一系列数字替换所有的,所以生成的文件如下所示:
file1.txt
i0 AAAAAA
AAAAAA
i1 AAAAAA
AAAAAA
i2 AAAAAA
AAAAAA
我现在拥有的是:
awk -vRS=i0 '{$0=n$0;ORS=RT}++n'
但这会导致:
file1.txt
i10 AAAAAA
AAAAAA
i20 AAAAAA
AAAAAA
i30 AAAAAA
AAAAAA
我哪里错了?
解决方案
这不起作用
awk -vRS=i0 '{$0=n$0;ORS=RT}++n'
因为每次读取记录时都会设置 RT。它包含与记录分隔符 RS 表示的文本匹配的输入文本。
只需RT
用硬编码替换"i"
awk -v RS=i0 '{$0=n$0;ORS="i"}++n'
输出将是:
i1 AAAAAAAA
AAAAAAAA
i2 AAAAAAAA
AAAAAAAA
i3 AAAAAAAA
AAAAAAAA
推荐阅读
- google-apps-script - 在工作表之间复制数据的脚本
- json - 如何将杠杆浏览器缓存添加到 firebase.json
- google-chrome - 为什么我通过 https 访问网站时会出现登录提示?
- java - Libgdx 旋转图像按钮
- python - 在 Python 3.6 中保存/加载大量字符串(列表/集)的最快方法是什么?
- c# - HttpWebResponse 没有从 PHP 响应
- r - 根据闪亮应用程序中的条件隐藏 helptext()
- azure-service-fabric - “ISomeService”类型不是服务接口,因为它不是从接口“INonServiceFabricService”派生的
- python - 在 Python 中使用嵌套的 while 循环确定素数
- javascript - 来自 PHP 的 500 内部服务器错误 - 将数据插入 VFP9 数据库