Мне нужно посчитать количество вхождений элементов второго столбца в большое количество файлов.Сценарий, который я использую, таков:
{
el[$2]++
}
END {
for (i in el) {
print i, el[i] >> "rank.txt"
}
}
Для запуска с большим количеством файлов я использую find | xargs
следующим образом:
find . -name "*.txt" | xargs awk -f script.awk
Проблема в том, чтоесли я посчитаю количество строк в выходных файлах rank.txt
(с wc -l rank.txt
), то число, которое я получу (например, 7600), будет больше, чем количество уникальных элементов второй строки (например, 7300), что яполучить с помощью:
find . -name "*.txt" | xargs awk '{print $2}' | sort | uniq | wc -l
Фактически давая:
awk '{print $1}' rank.txt | sort | uniq | wc -l
Я получаю правильное количество элементов (следуя примеру, я получу 7300).Таким образом, это означает, что элементы первого столбца выходных файлов не являются уникальными.Но этого не должно случиться!