Я удалил свой файл load-balancer.conf
в папке /etc/nginx/conf.d/
и создал файл default.conf
. файл. Я добавил
server_name tomcat-test.com;
после порта listen
в .conf
и перезапустил службу. Теперь все работает.
Готовый ответ, предполагая, что файлы отсортированы:
awk '{$2= -$2; $3= -$3} 1' file2 |
join -a1 -a2 file1 - |
awk 'NF > 3 {$2+=$4; $3+=$5; NF=3} 1'
Вывод на предоставленных входных данных:
game1 10 -5
game3 40 5
game4 -40 -2
(Если файлы не отсортированы, просто отсортируйте их и сохраняйте отсортированными. Это упростит задачу.)
Обратите внимание, что при этом используются только функции POSIX join
и POSIX функции Awk , поэтому он будет работать практически везде.
$ 2
в Awk - это ссылка на второе поле. $ 3
- ссылка на третье поле (каждой строки обрабатываемого файла). 1
вне фигурных скобок {...}
просто означает «истина», поэтому выполняется действие по умолчанию - печать строки.
По сути, первая команда Awk просто превращает числа в file2
в отрицательные числа.
Команда join
присоединяет file1
к тексту, предоставленному на его стандартном вводе (что он получает от Awk). -
после file1
в команде join
(а не другое имя файла) означает «использовать стандартный ввод». Опции -a1
и -a2
означают, что любые нежелательные строки в первом или втором файле выводятся как есть.
Последняя команда Awk берет строки, которые были спарены, т. Е. Строки, в которых число N поля F больше 3 ( NF> 3
), и добавляет их четвертое поле ко второму полю, добавляет их пятое поле к их третьему полю, а затем усекает четвертое и пятое поля.
Опять же, заключительные 1
внешние фигурные скобки используются для запуска действия Awk по умолчанию, «печать».
(См. этот учебник для получения дополнительной информации и правильного изучения Awk.)
Здесь много чего происходит. Я рекомендую выполнить каждую часть этих команд перед добавлением следующей части. Первое:
awk '{$2= -$2; $3= -$3} 1' file2
и изучите и поймите это. Затем:
awk '{$2= -$2; $3= -$3} 1' file2 |
join -a1 -a2 file1 -
И изучите и поймите это. (Также попробуйте опустить флаги -a1
и -a2
или опустить только один из них.)
Затем используйте полную команду:
awk '{$2= -$2; $3= -$3} 1' file2 |
join -a1 -a2 file1 - |
awk 'NF > 3 {$2+=$4; $3+=$5; NF=3} 1'
И посмотрите, не имеет больше смысла.
Неэлегантный bash
, присоединиться
, и вариант GNU sed
:
join -a1 -a2 -o 0 1.2,2.2,1.3,2.3 file1 <(sed 's/ \([0-9]*\)/ -\1/g' file2) | \
sed 's/ -/-/g;s/[0-9]*-[0-9]*/$((&))/g;s/.*/echo &/eg'
Вывод:
game1 10 -5
game3 40 5
game4 -40 -2