Compare algumas linhas de vários documentos

0

Eu quero comparar algumas linhas em vários documentos. Eu tentei usar diff e comm, mas as condições são estas,

  1. os documentos estão em um diretório / pasta de trabalho diferente, eu poderia usar um caractere curinga aqui, por exemplo, um (* .doc)

    File 1  ---> /home/user/file1/1.doc
    File 2  ---> /home/user/file2/2.doc
    File 3  ---> /home/user/file3/3.doc
    
  2. em seguida é comparar algumas linhas (2 a 3 linhas) de todos os documentos (* .doc)

Por exemplo, eu quero pegar a linha 2 (idade) e a linha 3 (sexo) dos seguintes documentos.

1.doc

Name: abc
Age: 123
Gender: m
Contact No.: 222 2222

2.doc

Name: bca
Age: 321
Gender: F
Contact No.: 333 3333

3.doc

Name: bca
Age: 321
Gender: F
Contact No.: 333 3333
  1. por fim, é gerar as linhas como outro arquivo, sejam elas iguais ou com diferença.
por marco guidolla 21.01.2016 / 12:28

1 resposta

1

Pelo que pude entender da sua pergunta, você só quer pegar as linhas 2 e 3 de cada arquivo e enviá-las para um novo arquivo. Aqui está um script para fazer isso:

find . -name "*.doc" | xargs awk 'FNR==2||FNR==3{print}' > new_file

xargs fará com que awk processe todos os arquivos gerados por find . awk imprimirá as linhas 2 e 3 de cada novo arquivo fornecido.

No caso de os caminhos poderem ter espaços:

find . -name "*.doc" -print0 | xargs -0 awk 'FNR==2||FNR==3{print}' > new_file
    
por 21.01.2016 / 12:50