找到一个匹配并替换为一系列数字

问题描述 投票:0回答:1

我的文件看起来像:

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 sed edit
1个回答
1
投票

这不起作用

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
© www.soinside.com 2019 - 2024. All rights reserved.