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.
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?
Tags diff whitespace osx