Se você tem a lista de nomes em list.txt, você pode fazer:
for i in Student Leader Lecturer; do grep -F $i list.txt | cut -d ' ' -f 1 | sort > $i.out ; done
Para obter os nomes em três arquivos separados, que você pode comparar com diffuse
(ou xxdiff
ou diff3
):
diffuse *.out
Se você quiser apenas ter arquivos com os nomes das pessoas que faltam em cada etiqueta, primeiro você pode gerar um arquivo com todos os nomes e usar uniq -u
para encontrar os que não estão nessa lista (os realmente únicos) :
sed -n '1!p' list.txt | cut -d ' ' -f 1 | sort -u > names.all
for i in Student Leader Lecturer; do fgrep $i list.txt | cut -d ' ' -f 1 | cat - names.all | sort | uniq -u > $i.missing ; done
Se você quiser fazer isso de um script e um arquivo feature
com:
Leader
Student
Lecturer
e a tabela de origem em example.txt
, você pode usar:
#!/bin/bash
rm -f *.missing names.all
feature=feature
sed -n '1!p' example.txt | cut -d ' ' -f 1 | sort -u > names.all
for i in $(cat $feature)
do
fgrep $i example.txt | cut -d ' ' -f 1 | cat - names.all | sort | uniq -u > $i.missing
done