Desejo colar dois arquivos juntos, mas com alinhamento vertical após uma linha delimitadora de seção ::
. Aqui está o que quero dizer.
Conteúdo de file1
:
Apple
Banana
Carrot
::
Durian
Conteúdo de file2
:
Energy
Flight
::
Gravity
Heartbreak
Saída desejada:
Apple Energy
Banana Flight
Carrot
::
Durian Gravity
Heartbreak
Até agora eu sei que quasepaste
fará o que eu quero (sem o belo alinhamento vertical); outra opção é dividir em vários arquivos e , em seguida, concatenar os resultados, mas quero evitar isso se puder. Como posso fazer isso?file1
file2
Não preciso estritamente de uma solução que use paste
. Qualquer coisa que funcione funciona!
Usando qualquer awk:
Esta é uma solução extremamente hackeada que funciona com seus dados de exemplo porque os dois arquivos têm apenas a
::
linha em comum e porque os arquivos contêm apenas palavras simples (sem espaços). Eu o consideraria, portanto, extremamente frágil e nada genérico.Ele analisa a saída lado a lado
diff
, então é issodiff
que faz o alinhamento vertical.O
awk
código que analisa adiff -y
saída produz partes selecionadas de cada linha, dependendo do número de campos e do conteúdo de certas partes dos dados.