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