Воспроизведение версии @Dennis, всегда выводит 10. Выполнение случайных чисел в отдельном массиве может создать дубликаты и, следовательно, менее 10 модификаций.
file=~/testfile
c=$(wc -l < "$file")
awk -v c=$c '
BEGIN {
srand();
count = 10;
}
{
if (c*rand() < count) {
--count;
print "do something with " $0;
} else
print;
--c;
}
' "$file"