如何在bash shell脚本中将数字附加到重复行的末尾?

时间:2018-10-01 06:22:17

标签: bash shell loops scripting

如果我的文件包含以下几行:

orange
apple
mango
orange
mango
orange

我如何在每个重复的行后面附加一个数字以获取:

orange
apple
mango
orange 2
mango 2
orange 3

使用bash脚本?预先谢谢您,我是新来编写脚本的人。

1 个答案:

答案 0 :(得分:0)

纯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逐行读取输入,并在处理后将其打印
  • 哈希%seen保持可见字符串的次数。如果是第一次看不到,则++运算符返回false时,数字将附加到要打印的行上。