Решение awk
:
$ awk 'NR==FNR{a[$2]=$3"\t"$4"\t"$5"\t"$6"\t"$7"\t"$8"\t"$9; next}
{
if($1 in a){
print $0,a[$1]
}
}' file2 file1
UN ID St M1 M2 SE DOF PV PA FC TID X E GG7 J O
17127159 0 -5.9 297.3 765.7 0.22 4 0.003 0.00389231 2.57536 16657436 353.568 335.295 221.717 815.654 684.85
17127163 2 -3.87 189.914 492.307 0.3548 4 0.0179 0.01795 2.59226 16657450 221.647 226.774 136.274 431.32 392.533
Awk разбивает каждую строку ввода на поля (по умолчанию с пробелами), сделать 1-е поле $ 1
2-м $ 2
и т. д. Специальная переменная NR
- это текущий номер строки ввода, а FNR
- текущая строка номер читаемого файла. Следовательно, при обработке нескольких файлов они равны только при чтении первого файла.
NR == FNR {a [$ 2] = $ 3 "\ t" $ 4 "\ t" $ 5 "\ t" $ 6 "\ t" $ 7 "\ t" $ 8 "\ t" $ 9; next}
: если мы читаем первый файл, сохраните поля с 3 по 9 (соединенные табуляцией) как значение в массиве a
, ключ которого является вторым полем. Затем перейдите к следующей
строке. next
гарантирует, что остальная часть скрипта будет запущена не для первого файла ( file2
), а только для второго ( file1
).
if ($ 1 in a) {print $ 0, a [$ 1]}
: теперь мы во втором файле ( file1
). Если первое поле существует как ключ в массиве a
( if ($ 1 в a)
), то выведите текущую строку $ 0
и значение, хранящееся в a
для $ 1
: поля с 3 по 9 из file2
.
Проверьте, нет ли случайно curl_init()
в disabled_functions
вашего php.ini, потому что, как я вижу здесь, программа установки Zencart проверяет это.
Также, на тестовом скрипте (как тот, который вы создали для phpinfo()) попробуйте следующее, чтобы посмотреть, что произойдет:
var_dump(curl_init());