2012-02-02 14 views
5

en un script como este para dividir un archivo grande por la cadena:las variables de la subasta de letras en AWK

awk '/MYSTRING/ {n++}{print >"out_" n ".txt" }' LARGEFILE 

Esto produce out_1.txt, out_2.txt, etc.

¿Cómo puedo obtener los prefijos de letras como producido por split (out_aa.txt, out_ab.txt, out_ac.txt, ...)?

Gracias

Respuesta

11

No es muy sencillo por lo que me permite utilizar un poco de aritmética de módulo aquí de esta manera:

awk '/MYSTRING/ {n++} {p=97+int(n/26); q=(n%26)+97; s=sprintf("out_%c%c.txt", p, q); print > s}' LARGEFILE 
+1

super! gracias – philstra

+1

Este es un guardián @anubhava !! +1 –

+0

De nada, me alegro de que haya funcionado. – anubhava

0

Esto podría funcionar para usted:

awk -vv "$(echo {a..z}{a..z})" 'BEGIN{split(v,a);n++} /MYSTRING/ {n++}{print >"out_" a[n] ".txt" }' LARGEFILE 
Cuestiones relacionadas