Como descobrir dois arquivos e remover as entradas comuns do segundo arquivo

0

Eu tenho um diretório principal e tem vários subdiretórios com muitos arquivos com nome e extensão semelhantes. Eu quero descobrir dois arquivos e depois remover as entradas comuns do segundo arquivo.

Eu tentei seguir o comando

awk 'NR==FNR{a[$1]++;next;}!($2 in a)' file1_comma_splited_newsort.txt file2_comma_splited_snp.txt >> output.txt 
O comando

acima de awk compara a 1ª coluna do arquivo1 com a 2ª coluna do arquivo2 remove as entradas duplicadas da 2ª coluna do arquivo2. depois de executar este comando, recebo a saída desejada. Mas eu preciso executar este comando para muitos arquivos que estão dentro do subdiretório. Para isso eu quero descobrir os dois arquivos usando o comando find e coloque no comando awk , é possível fazer?

considere que meu diretório contém os seguintes arquivos

main directory file1_comma_splited_newsort.txt 
sub-directory1 file2_comma_splited_snp.txt
sub-directory2 file3_comma_splited_snp.txt 
sub-directory3 file4_comma_splited_snp.txt
sub-directory4 file5_comma_splited_snp.txt
sub-directory5 file6_comma_splited_snp.txt
sub-directory6 file7_comma_splited_snp.txt
sub-directory7 file8_comma_splited_snp.txt
sub-directory8 file9_comma_splited_snp.txt

Eu preciso comparar todos os arquivos do subdiretório com a coluna 1st do arquivo de diretório principal, ou seja, file1_comma_splited_newsort.txt um por um para remover entradas duplicadas presentes na coluna 2nd de todos os arquivos de subdiretórios.

    
por user6681622 21.11.2016 / 12:35

1 resposta

0

Assumindo uma árvore como a seguinte

main
|--maindata.txt
|--sub
   |--subdata1.txt
   |--subdata2.txt

e você está no diretório principal como cdw, isso pode ser feito com um script bash (mesmo que seja um one-liner, se desejar).

#!/bin/bash
for file in sub/* ; do
    awk '{actions}' maindata.txt "$file" >> "$file"_differences
done

Isso simplesmente fará uma iteração de todos os arquivos em seu subdiretório e criará um arquivo contendo as diferenças de cada arquivo no sub.

    
por 21.11.2016 / 17:34

Tags