No bash, você pode usar a substituição de processos.
Para remover os últimos 40 caracteres, você pode usar
diff <(sed 's/.\{40\}$//' file1) \
<(sed 's/.\{40\}$//' file1)
Para selecionar os primeiros 40, você pode usar
cut -c1-40 file
Eu tenho dois arquivos de log que estão sendo gerados a partir de dados binários decodificados. Os decodificadores são um pouco diferentes e estou tentando isolar as diferenças na saída. Para fazer isso, estou diferenciando os dois arquivos de log, o que funciona muito bem, exceto que os carimbos de hora são diferentes para cada linha. Por certas razões, as diferenças nos timestamps não são relevantes, então eu quero que o diff as ignore.
Como os arquivos de log seguem um formato específico, posso simplesmente excluir os últimos ~ 40 caracteres de cada linha para ignorar os carimbos de hora. EX:
Linha A:
[T9] | ENTRY NAME varA = 0000012B varB = 00000000 | 000015.508.107.113s | file.cpp :738
Linha B:
[T9] | ENTRY NAME varA = 0000012B varB = 00000000 | 000015.508.107.163s | file.cpp :738
Essas linhas devem ser tratadas como idênticas no meu caso.
Como posso dizer ao diff para incluir apenas os primeiros n caracteres de cada linha ou excluir os últimos m caracteres de cada linha?
Tags command-line bash diff linux