repeated remove duplicate bash shell unique lines

duplicate - bash remove repeated lines in file



Lineas unicas en bash (2)

Soy totalmente novato en bash, así que aquí está mi problema:
Cualquier cantidad de líneas de texto se da desde la entrada estándar.
Salida: número de líneas no repetitivas.

Por ejemplo:
ENTRADA:

Ella está usando zapatos negros.
Mi nombre es Johny.
Odio los lunes.
Mi nombre es johny
No te entiendo
Ella lleva zapatos negros

SALIDA:

2


Así es como resolvería el problema:

... | awk ''{n[$0]++} END {for (line in n) if (n[line]==1) num++; print num}''

Pero eso es bastante opaco. Aquí hay una forma ( ligeramente ) más legible de mirarlo (requiere la versión bash 4)

... | { declare -A count # count is an associative array # iterate over each line of the input # accumulate the number of times we''ve seen this line # # the construct "IFS= read -r line" ensures we capture the line exactly while IFS= read -r line; do (( count["$line"]++ )) done # now add up the number of lines who''s count is only 1 num=0 for c in "${count[@]}"; do if (( $c == 1 )); then (( num++ )) fi done echo $num }


Podría intentar usar uniq man uniq y hacer lo siguiente

sort file | uniq -u | wc -l