Представленный вами образец текста, кажется, разделен либо табуляцией, либо пробелами (выравнивание по столбцу?).Важно знать, какие, или регулярное выражение не будет работать.Также важно знать, является ли шаблон единообразным по всему файлу.
Если он выровнен по столбцам, самый простой и, вероятно, самый безопасный способ - просто отсчитать символы.Например:
s/(^.{20})(\S*) /$1"$2"/;
(Вам нужно будет самостоятельно настроить число 20. Я только что приблизительно).
Обратите внимание, что я отсекаю два пробела в конце поля имени вБезрассудная манера.Это чтобы не испортить формат для следующих значений.Однако, если поле заполнено до краев, в конце может не быть двух пробелов, и регулярное выражение будет пропущено.Но тогда, с другой стороны, вы все равно не сможете разместить там кавычки.
При работе с файлами такого типа я не думаю, что безопаснее использовать общий поиск.Если вы рассчитываете, что запятые появляются только в именах, рано или поздно вы найдете кого-то, кто подумал, что «Бронкс, Нью-Йорк» должен быть в поле города, и ваше регулярное выражение будет испорчено.
Aнесколько более строгое, но сложное регулярное выражение будет включать в себя предыдущие поля:
$date='\d{2}-\d{2}-\d{2}'; # this might work for dates such as 11-10-23
s/^(\d+\s+$date\s+)(\S+) /$1"$2"/;
То же самое здесь, если поле имени недостаточно велико, чтобы поместиться в две кавычки, оно не будет добавлено.Вы должны проверить свой файл и посмотреть, так ли это.Если это так, вам придется как-то с этим справиться.
Иногда я нахожу, что помещение регулярных выражений определенного поля в отдельные переменные помогает с удобочитаемостью, например, с $ date выше.
Хорошоудачи!