Все методы создания этого вывода будут дорогостоящими. Этот подход, однако, будет работать, даже если файл намного больше RAM:
$ while read n; do awk -v n="$n" '$1!=n{print n "," $1}' file; done <file
123212,234234
123212,12324
123212,1243223
123212,5453443
234234,123212
234234,12324
234234,1243223
234234,5453443
12324,123212
12324,234234
12324,1243223
12324,5453443
1243223,123212
1243223,234234
1243223,12324
1243223,5453443
5453443,123212
5453443,234234
5453443,12324
5453443,1243223
while read n
do
awk -v n="$n" '$1!=n{print n "," $1}' file
done <file
read n
читает числа из файла
по одному. Для каждого n
сценарий awk запускается для создания той части вывода, для которой n
находится в первом столбце. Параметр -v n = "$ n"
создает переменную awk с именем n
, которая имеет то же значение, что и переменная оболочки n
. Условие $ 1! = N
выбирает те строки в файле
, для которых номер в этой строке файла отличается от n
. Для этих строк мы печатаем число n
, за которым следует запятая, а затем номер в строке.