如何用自然数替换文本每一行中相同位置的字符?

时间:2019-01-07 12:30:29

标签: bash awk sed

我有一个这样的多行重复文本,每行都是相同的。

aaa0bbb
aaa0bbb
...
aaa0bbb

如何将其更改为

aaa0bbb
aaa1bbb
...
aaa2bbb

我试图用awk或sed处理它,但这对我来说很难。

2 个答案:

答案 0 :(得分:0)

Something like in awk may do the work

awk 'BEGIN {i=0} {printf("%s%c%s\n", substr($0, 1, 3), i, substr($0, 5, length($0) - 4));i++}' inputfile

NB! After 10-nt row the number will have two digits and so on.

答案 1 :(得分:0)

You can try Perl, just specify the pattern in brackets aaa0bbb as (aaa)(0)(bbb) in the below one-liner.

$ cat mkb.txt
aaa0bbb
aaa0bbb
def
ghi
aaa0bbb
aaa0bbb
$ perl -pe  ' s/(aaa)(0)(bbb)/sprintf("%s%d%s",$1,$kv{"$1$2$3"}++,$3)/ge ' mkb.txt
aaa0bbb
aaa1bbb
def
ghi
aaa2bbb
aaa3bbb
$