On 11/18/20 12:25 PM, Chris Elvidge wrote:
> You could write your own function to do it. E.g.
>
> unique() {
> [ "$1" ] || { echo "Needs a readable file to test" && return 1; }
> [ -r "$1" ] || { echo "Needs a readable file to test" && return 1; }
> R=""; N=0
> while IFS=$'\n' read L; do
> [ "$L" = "$R" ] && { ((N++)); continue; }
> [ "$N" -gt 0 ] && { echo "[Previous line repeated $N times]"; N=0; }
> R="$L"
> echo "$L"
> done <$1
> }
Nice.
The UNIX toolbox is diverse. ;-)
I'd use:
awk '
function p(n) {
if (n > 1) {
printf("[previous line repeated %d times]\n", n-1);
}
}
{
if (line != $0) {
p(n);
n = 0;
}
line = $0;
if (n == 0)
print
n++;
}
END { p(n); }
'
Have a nice day,
Berny