tag 44704 notabug
severity 44704 wishlist
stop
Hello,
On 2020-11-17 6:32 a.m., Brian J. Murrell wrote:
It would be a useful enhancement to uniq to replace all lines
considered non-uniq (i.e. those that would be removed from the output)
with a message about how many times the previous line was repeated.
I.e.
$ cat <<EOF | uniq --replace-with-message '[previous line repeated %d times]'
[...]
uniq supports the "--group" option, which adds a blank line after each
group of identical lines - this can be used down-stream to process
groups in any way you want.
Example:
$ cat <<EOF > in
first line
second line
repeated line
repeated line
repeated line
repeated line
repeated line
third line
EOF
$ cat in | uniq --group=append
first line
second line
repeated line
repeated line
repeated line
repeated line
repeated line
third line
$ cat in | uniq --group=append \
| awk '$0=="" { print "do something after group" ; next } ;
1 { print }'
first line
do something after group
second line
do something after group
repeated line
repeated line
repeated line
repeated line
repeated line
do something after group
third line
do something after group
And with counting:
$ cat in | uniq --group=append \
| awk 'BEGIN { c = 0 } ;
$0=="" { print "Group has " c " lines" ; c=0 ; next } ;
1 { print ; c++ }'
first line
Group has 1 lines
second line
Group has 1 lines
repeated line
repeated line
repeated line
repeated line
repeated line
Group has 5 lines
third line
Group has 1 lines
Hope this helps.
More information about "uniq --group=X" is here:
https://www.gnu.org/software/coreutils/manual/html_node/uniq-invocation.html
I'm marking this as "notabug/wishlist", but will likely close soon as
"wontfix" unless we come up with convincing argument why "--group"
is not sufficient for your use case.
Regardless of the status, discussion can continue by replying to this
thread.
regards,
- assaf