Прочитайте файл построчно, сохраните строку в буфере, если последний столбец имеет то же значение, что и все остальные строки в буфере, в противном случае обработайте буфер и очистите его.
Обработка буфера означает попытку найти хотя бы одну пару последовательных строк, которые не разделяют значение 4-го столбца, и печать буфера в случае успеха.
Я сохранил точные строки в буфере вместе с отдельными столбцами для более удобного вывода и более легкого доступа к значениям.
#!/usr/bin/perl
use warnings;
use strict;
sub process {
my (@rows) = @_;
my $different;
for my $i (1.. $#rows) {
$different = 1, last if $rows[ $i - 1 ][4] ne $rows[$i][4];
}
print map "$_->[0]\n", @rows if $different;
}
my @buffer;
while (<>) {
chomp;
my @columns = split;
if (! @buffer || $buffer[0][-1] == $columns[-1]) {
push @buffer, [$_, @columns];
} else {
process(@buffer);
@buffer = [$_, split];
}
}
process(@buffer);
Разобрался:
sox -R -t mp3 /home/pi/Desktop/ribo.mp3 -t wav -| sudo./pi _fm _rds -частота 94,5 -аудио-
-R в начале перемешивает файлы.