Путь perl:
#!/usr/bin/perl
$filename=$ARGV[0];
open(my $fh, "<", $filename) or die "cannot open < $filename: $!";
my %hash, my $key;
while (my $row = <$fh>) {
chomp $row;
if ($row =~ /\-bar\s+([0-9]+)/ ) {
$key = $1;
}
$hash{$key} .= "$row\n";
}
foreach (sort { $a <=> $b } keys(%hash) ) {print "$hash{$_}"}
Сохранить сценарий и вызвать исполняемый файл (chmod +x script) с помощью:
script file.txt
Выход:
-foo -bar 1 \
-randomtext=00 "00" \
-foo -bar 42 \
randomtext=00 "00" \
-randomtext=00 "00" \
-foo -bar 104 \
randomtext=00 "00" \