Nawk - Nawk не хватает места в tostring (сравнить два файла

Я запускаю скрипты nawk в системе Solaris, чтобы получить записи о файле1, а не о файле2, и через некоторое время найти повторяющиеся записи с помощью следующих сценариев:

Для сравнения:

nawk 'NR==FNR{a[$0]++;next;} !a[$0] {print"line":" FNR $0}' file1 file2

дубликат:

nawk '{a[$0]++}END{for(i in a){if(a[i]-1)print i,a[i]}}' file1

в середине скрипта я получаю сообщение об ошибке

nawk: не хватает места в записи tostring 971360

Я использую файл с 2 миллионами записей.

1 ответ

Исправьте ваш код, ваша двойная кавычка также не соответствует..

 nawk 'NR==FNR{a[$0];next;} !($0 in a){print "line:" FNR $0}' file1 file2

--редактировать--

для дубликата попробуйте это

nawk '{A[$0]++}END{for(i in A)if(A[i]>1)print i,A[i]}' file

!a[0] -> используя a[$0] создает дополнительный пустой элемент массива для каждого $0 который не существует в массиве a при чтении второго файла, так что лучше всего сделать !($0 in a)

Другие вопросы по тегам