Parece que bbedit
é algum tipo de editor OSX pago. Eu tenho medo que nunca usei e não consigo instalar, então não posso ajudá-lo. Com base na regex que você mostra, ela tem sua própria sintaxe de expressão regular, portanto, é improvável que você encontre uma solução em um site geral * nix usando-a. No entanto, aqui estão algumas outras opções. Em ambos, a ideia é salvar o primeiro campo e imprimir uma linha em branco se for diferente da linha anterior:
$ awk '{if($1!=last && NR>1){print ""}last=$1;}1;' file
jan ford
jan trillian
mar trillian
sep marvin
awk
é uma linguagem de script projetada para lidar com dados baseados em campo. Ele dividirá automaticamente cada linha em campos que podem ser chamados de $1
, $2
... $N
. Portanto, o script acima salvará o primeiro campo na variável last
e, para cada linha, exceto a primeira (isso é o que o NR>1
significa), ela imprimirá uma linha vazia se last
não for igual ao valor valor atualmente salvo. O 1;
é um atalho do awk para "imprimir todas as linhas".
Como alternativa, você também pode fazer isso em perl
:
$ perl -lape '$F[0] ne $last && $.>1 && print ""; $last=$F[0]' file
jan ford
jan trillian
mar trillian
sep marvin
Aqui, estamos usando as opções de linha de comando perl
para fazer a maior parte do trabalho. O -a
faz com que perl
aja como awk
e divida cada linha de entrada na matriz @F
. Portanto, $F[0]
é o primeiro campo. O -l
faz com que perl
adicione uma nova linha a cada print
, então print ""
apenas imprime uma linha vazia. O -p
faz com que imprima cada linha de entrada depois de aplicar o script fornecido por -e
. O script em si é exatamente igual ao awk
acima.