
Estou comparando dois arquivos. Estou tentando ignorar os caracteres alfanuméricos depois @
e antes [
. Uma linha parece
model.Field@d6b0d6b[fieldName
Responder1
eu usariasubstituições de processoaqui:
diff <(sed 's/@[^[]*/@/' old) <(sed 's/@[^[]*/@/' new)
Responder2
Presumo que você estejausando Bash.
se v="model.Field@d6b0d6b[fieldName"
então você pode fazer o seguinte:
# Extract the right side of "$v"
r="${v#*[}"
# Extract the left side of "$v"
l="${v%@*}"
# Combine
new_v="$l@[$r"; new_v1="$l$r"
Você pode usar"$novo_v"ou"$novo_v1"depende se você deseja @ e [ ou não.
ComoSr.comentado, minha resposta não responde à pergunta. Correto, não prestei muita atenção ao título. Vamos consertar isso e agrupar o código acima com a seguinte função para imprimir os dados de um único arquivo conforme necessário
pf()
{
while read -r line; do
# This is a bit fancy but does the same thing as the code above.
printf '%s\n' "${line%@*}${line#*[}"
done < "$1"
}
Agora, podemos diff
os dois arquivos usando o seguinte comando:
diff <(pf file1.txt) <(pf file2.txt)
Aqui está um Exemplo de saída
rany$ cat file1.txt
model.Field1@__A__[fieldName
model.FieldIAMDIFFERENT@__B__[fieldName
model.Field1@__C__[fieldName
rany$ cat file2.txt
model.Field1@__C__[fieldName
model.Field1@__D__[fieldName
model.Field1@__E__[fieldName
rany$ diff <(pf file1.txt) <(pf file2.txt)
2c2
< model.FieldIAMDIFFERENTfieldName
---
> model.Field1fieldName
rany$
Como você pode ver, o fato das linhas serem diferentes entre @ e [ está sendo ignorado, e a única linha diferente entre os arquivos é esta:
modelo.FieldIAMDIFFERENTcampoName
Sinto muito por não prestar muita atenção ao seu título como parte da pergunta.
Responder3
Filtre os arquivos de dados e execute diff-:
sed 's/\@.*\[/@[/' file1 > file1.filt
sed 's/\@.*\[/@[/' file2 > file2.filt
diff file1.filt file2.filt
Uma alternativa é usar diff
a opção -I . Quaisquer linhas que correspondam ao padrão são ignoradas na comparação de diferenças. Selecione um padrão que selecione exclusivamente as linhas que não devem ser comparadas. por exemplo
diff -I 'dataexplorer.bigindex' file1 file2