Добрый день!

Форумы: 

Нужна Ваша помощь в написании скрипта.
Есть около 5000 текстовых файлов раскиданных по каталогам.
Формат файлов – 20 столбцов чисел разделённых пробелом.
Пример файла date.txt:

0000000 0000000 0000000 0000000 0000000 0000000 0000000 0000000 0000000 
0000000 0000000 0000000 0000000 0000000 0000000 0000000 0000000 0000000 
0000002 0000004 0000006 0000008 0000010 0000012 0000014 0000016 0000018 
0000000 0000000 0000000 0000000 0000000 0000000 0000000 0000000 0000000 
0000000 0000000 0000000 0000000 0000000 0000000 0000000 0000000 0000000 
0000000 0000000 0000000 0000000 0000000 0000000 0000000 0000000 0000000 

Требуется найти все числа больше Х в столбцах 8 и 9 (во всех файлах) и заменить числами из файла numbers.txt .
Пример файла numbers.txt:

9999999
8888888
7777777

Первая замена - первое число из numbers.txt
Вторая замена - второе число из numbers.txt
Когда дошел до конца файла, то перескакиваю на начало файла numbers.txt
Спасибо!

Приветствую!
Вот скриптик:

#!/bin/gawk -f
BEGIN {
    FILE_NUMBERS = "numbers.txt" #файл с числами для подстановки
    COL = 9 #колонка для обработки
    NUM = 1 #сравниваемое число
    while (getline var < FILE_NUMBERS) numbers[ln++] = sprintf ("%7.7s", var) #заношу numbers.txt в массив для дальнейшей обработки
}
 
$COL > NUM {
    if (i >= ln) i = 0 #перезапускаю цикл замены
    $COL = numbers[i++] #заменяю значения на нужные
}
 
{
    print $0 #вывожу 
}

К сожалению так и не смог победить скрипт без использования sprintf - почему-то срывает вывод. :(

Использовать примерно так:

for i in /path ; do script.awk $i > $i.out.txt ; done

- вариант для файлов, находящихся в одной папке

find /path -exec script.awk {} > {}.out.txt \;

- вариант для фалов, находящихся в папках ниже папки /path
в скрипте можно предусмотреть вывод сразу в нужный файл, а не в стандартный вывод.