如果我的文件包含以下几行:
orange
apple
mango
orange
mango
orange
我如何在每个重复的行后面附加一个数字以获取:
orange
apple
mango
orange 2
mango 2
orange 3
使用bash脚本?预先谢谢您,我是新来编写脚本的人。
答案 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时,数字将附加到要打印的行上。