
Quiero dividir mi archivo en varios archivos.
A continuación se muestra el archivo que tengo.
sort a # 3|4
sort a # 2|5
sort b # 1|2
sort b # 2|5
Quiero tener el archivo separado a continuación
archivo1
sort a # 3|4
sort a # 2|5
archivo2
sort b # 1|2
sort b # 2|5
Como puede ver, los dividí según la segunda columna. Como tengo muchos valores diferentes para la columna dos, lleva mucho tiempo dividir el archivo de forma laboriosa. ¿Cómo lograr este problema?
Respuesta1
AWK
solución:
awk '!a[$2]++{ fn="file"++c }{ print > fn }' inputfile
!a[$2]++
- Verifique si encuentra un segundo valor de campo único$2
utilizándolo como índice de la matriza
. La condición!a[$2]++
se evaluarátrue
solo en la primera aparición de$2
un valor único.fn="file"++c
- generandoNombre del archivocon sufijo incremental++c
Visualización de resultados:
$ head file[12]
==> file1 <==
sort a # 3|4
sort a # 2|5
==> file2 <==
sort b # 1|2
sort b # 2|5
Respuesta2
split -l 2 test
Esto generará 2 archivos divididos. Salida de archivos divididos:
$ cat xaa
sort a # 3|4
sort a # 2|5
$ cat xab
sort b # 1|2
sort b # 2|5