在bashshell脚本中,如何在重复行的末尾追加一个数字?
如果我有一个包含以下行的文件:在bashshell脚本中,如何在重复行的末尾追加一个数字?,bash,shell,loops,scripting,Bash,Shell,Loops,Scripting,如果我有一个包含以下行的文件: orange apple mango orange mango orange 如何在每个重复行中添加一个数字以获得: orange apple mango orange 2 mango 2 orange 3 使用bash脚本?提前感谢您,我对编写脚本还不熟悉。纯bash解决方案:使用关联数组 #!/bin/bash declare -A seen while read line ; do if ((seen[$line]++)) ; then
orange
apple
mango
orange
mango
orange
如何在每个重复行中添加一个数字以获得:
orange
apple
mango
orange 2
mango 2
orange 3
使用bash脚本?提前感谢您,我对编写脚本还不熟悉。纯bash解决方案:使用关联数组
#!/bin/bash
declare -A seen
while read line ; do
if ((seen[$line]++)) ; then
echo "$line ${seen[$line]}"
else
echo "$line"
fi
done
或者,使用Perl:
perl -pe '$seen{$_}++ and s/$/ $seen{$_}/'
逐行读取输入并在处理后打印-p
- hash
保留字符串被看到的次数。如果第一次没有看到,当%seen
运算符返回false时,该数字将追加到要打印的行++