在文件编辑中,如何将所有的字符串单词替换成递增的整数?

In file editing, how to replace all the string words with incremental integers?

我有一个包含很多字符串单词的文件,被管道切断了。我想要一个脚本(用 bash 或任何其他编程语言编写)能够用增量唯一整数(类似于 ID)替换每个单词。

来自这样的输入:

aaa|ccccc|ffffff|iii|j
aaa|ddd|ffffff|iii|j
bb|eeee|hhhhhh|iii|k

我想要这样的东西

1|3|6|8|9
1|4|6|8|9
2|5|7|8|10

即:aaa1代替,bb2代替,以此类推。

如何做到这一点?谢谢!

awk 来拯救... 这将按行进行编号,我不确定它是否足够重要以使其成为柱状。

awk -F "|" -vOFS="|" '{
     line=sep="";
     for(i=1;i<=NF;i++) {
        if(!a[$i])a[$i]=++c;
        line=line sep a[$i];
        sep=OFS
     }
     print line
}' words

1|2|3|4|5
1|6|3|4|5
7|8|9|4|10

要将单词关联到另一个文件中,您可以替换

if(!a[$i])a[$i]=++c;

if(!a[$i]){
     a[$i]=++c; 
     print $i"="a[$i] > "assoc"
}

你可以定义一个关联数组

declare -A array

使用单词作为键,使用增量数字作为值

array[aaa]=$n

然后用值替换原来的单词