查找匹配项并替换为数字序列
Finding a match and replacing with a sequence of numbers
我有这样的文件:
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 '{[=12=]=n[=12=];ORS=RT}++n'
但这会导致:
file1.txt
i10 AAAAAA
AAAAAA
i20 AAAAAA
AAAAAA
i30 AAAAAA
AAAAAA
我哪里错了?
这行不通
awk -vRS=i0 '{[=10=]=n[=10=];ORS=RT}++n'
因为每次读取一条记录都会设置RT。它包含与记录分隔符 RS 表示的文本相匹配的输入文本。
只需将 RT
替换为硬编码的 "i"
awk -v RS=i0 '{[=11=]=n[=11=];ORS="i"}++n'
输出将是:
i1 AAAAAAAA
AAAAAAAA
i2 AAAAAAAA
AAAAAAAA
i3 AAAAAAAA
AAAAAAAA
我有这样的文件:
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 '{[=12=]=n[=12=];ORS=RT}++n'
但这会导致:
file1.txt
i10 AAAAAA
AAAAAA
i20 AAAAAA
AAAAAA
i30 AAAAAA
AAAAAA
我哪里错了?
这行不通
awk -vRS=i0 '{[=10=]=n[=10=];ORS=RT}++n'
因为每次读取一条记录都会设置RT。它包含与记录分隔符 RS 表示的文本相匹配的输入文本。
只需将 RT
替换为硬编码的 "i"
awk -v RS=i0 '{[=11=]=n[=11=];ORS="i"}++n'
输出将是:
i1 AAAAAAAA
AAAAAAAA
i2 AAAAAAAA
AAAAAAAA
i3 AAAAAAAA
AAAAAAAA