Похоже на идею для команд UNIX, сначала нужно отсортировать:
cat 1|sort > 1.sort
cat 2|sort -t, -k2 > 2.sort
join -t, -2 2 1.sort 2.sort
Я только что сделал тебе домашнее задание?
Последняя строка вашего скрипта не идентична той, которая работает в командной строке. Нет причин добавлять эти две обратные косые черты.
s/(\[0-9]+\.[0-9]{2}\)[0-9]+/\1/
должно быть
s/([0-9]+\.[0-9]{2})[0-9]+/\1/
(также вам не нужно экранировать двоеточие semi -в вашей первой команде s///
, но это не проблема, так как оно просто игнорируется)