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)