我想要写在bash脚本,打印标准输入的至少重复线在while循环打破了环
我写了这个代码使用grep:
#!/bin/bash
var=1000
while read line
do
tmp=$(grep -c $line)
if [ $tmp -lt $var ]
then
var=$tmp
out=$line
fi
done
var="$var $out"
echo $var
但如使用这样
id1
id2
id3
id1
square
id1
id2
id3
id1
circle
id2
id2
程序只进入一次循环从而测试时,它提供一个坏输出
3 id1
当正确的应该是
1 square
这条线
tmp=$(grep -c $line)
似乎t o打破循环,但我找不到原因。 有没有办法绕过在我的代码或任何其他方式来修复我的脚本使用grep?
为什么'circle'是您的预期输出?它不是您示例中的最后一个重复行或最后一行。 – tripleee
它应该是最少的重复,而不是最后的重复;) 不过,下面的答案对我有很大的帮助;) – Konrad
那么你是说第一个独特的行吗?你有多个独特的行;它们都是最不重复的。 – tripleee