separador print practicos examples ejemplos comparar comando columnas campos archivos awk text-processing comm

print - awk separador de campos



Encontrar un valor comĂșn en varios archivos que contienen valores de columna individual (4)

Tengo 100 archivos de texto que contienen columnas individuales cada uno. Los archivos son como:

file1.txt 10032 19873 18326 file2.txt 10032 19873 11254 file3.txt 15478 10032 11254

y así. El tamaño de cada archivo es diferente. Amablemente dígame cómo encontrar los números que son comunes en todos estos 100 archivos.

El mismo número aparece solo una vez en 1 archivo.


Archivos con una sola columna ?

Puede ordenar y comparar estos archivos, usando shell:

for f in file*.txt; do sort $f|uniq; done|sort|uniq -c -d

Last -c no es necesario, solo es necesario si desea contar el número de ocurrencias.


Esto funcionará independientemente de si el mismo número puede aparecer varias veces en 1 archivo:

$ awk ''{a[$0][ARGIND]} END{for (i in a) if (length(a[i])==ARGIND) print i}'' file[123] 10032

Lo anterior usa GNU awk para verdaderas matrices multidimensionales y ARGIND. Hay ajustes fáciles para otros awks si es necesario, por ejemplo:

$ awk ''!seen[$0,FILENAME]++{a[$0]++} END{for (i in a) if (a[i]==ARGC-1) print i}'' file[123] 10032

Si los números son únicos en cada archivo, todo lo que necesita es:

$ awk ''(++c[$0])==(ARGC-1)'' file* 10032


Una usando Bash y comm porque necesitaba saber si funcionaría. Mis archivos de prueba fueron 1 , 2 y 3 , de ahí el for f in ? :

f=$(shuf -n1 -e ?) # pick one file randomly for initial comms file sort "$f" > comms for f in ? # this time for all files do comm -1 -2 <(sort "$f") comms > tmp # comms should be in sorted order always # grep -Fxf "$f" comms > tmp # another solution, thanks @Sundeep mv tmp comms done


awk al rescate!

para encontrar el elemento común en todos los archivos (asumiendo la singularidad dentro del mismo archivo)

awk ''{a[$1]++} END{for(k in a) if(a[k]==ARGC-1) print k}'' files

cuente todas las ocurrencias e imprima los valores donde contar equivale a la cantidad de archivos.