Qualquer maneira de alterar o tamanho da tabulação da saída do comando diff?

0

Estou no OSX e executando um comando diff como este, para criar uma saída lado a lado:

$] diff -Bbwy --width=200 --suppress-common-lines file1.txt file2.txt > diff-output.txt

Produz meus diffs muito bem, mas usa abas para recuo da saída (alinhamento da linha do meio lado a lado, etc). Além disso, os arquivos em questão também usam tabulações para recuo dentro deles, então a saída do diff tem todos esses caracteres de tabulação neles.

Eu quero que a saída de diff tenha espaços, especificamente 4 espaços em vez de guias.

Eu sei que diff suporta a opção -t para fazer exatamente isso, mas o problema é que ele usa um tamanho fixo de 8 espaços para todas as guias (não apenas as guias de recuo da linha principal dos arquivos originais, mas também suas guias de alinhamento para manter a linha do meio alinhada, etc).

Eu tentei uma variedade de abordagens de pós-processamento para pegar as guias (ou espaços) de diff output e reduzi-las ao tamanho desejado de 4 espaços, mas isso sempre causa desalinhamentos da diff de saída lado a lado.

Então pensei que talvez eu pudesse pré-processar os dois arquivos sendo diff ed, usando tab2space ou algo assim, para obter os recuos de linha de cada arquivo das guias em 4 espaços antes de fazer o diff. Mas não consigo descobrir como, sem arquivos temporários, as duas entradas pré-processadas são canalizadas para diff .

Isso pode ser feito?

Ou existe alguma outra abordagem que eu não tenha tentado? Qualquer maneira secreta de configurar / forçar diff -t para usar apenas guias de 4 espaços em vez de 8?

    
por Kyle Simpson 05.11.2017 / 19:05

1 resposta

1

diff  (options)  <(expand -t4 file1.txt)  <(expand -t4 file2.txt)
expandirá as guias no arquivo de entrada para espaços, assumindo tabulações definidas a cada quatro colunas. Combinar isso com a opção diff -t deve dar o que você deseja.     
por 05.11.2017 / 20:51