在文件编辑中,如何将所有的字符串单词替换成递增的整数?
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
即:aaa
被1
代替,bb
被2
代替,以此类推。
如何做到这一点?谢谢!
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
然后用值替换原来的单词
我有一个包含很多字符串单词的文件,被管道切断了。我想要一个脚本(用 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
即:aaa
被1
代替,bb
被2
代替,以此类推。
如何做到这一点?谢谢!
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
然后用值替换原来的单词