#!/usr/bin/perl # https://perlmonks.org/?node_id=1226286 use strict; use warnings; local $_ = do { local $/, }; 1 while s/^(\w+),(\w+),.*\n((?:.*\n)*?)^\2,\1,.*\n/$3/gm; print; __DATA__ personA,personB,10 personA,personC,23 personA,personD,43 personB,personA,190 personE,personF,10