2012-02-02 8 views
5

in uno script come questo per suddividere un file di grandi dimensioni da stringa:variabili lettera incremento in awk

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

Questo produce out_1.txt, out_2.txt, ecc

Come posso ottenere lettera prefissi come prodotto da split (out_aa.txt, out_ab.txt, out_ac.txt, ...)?

Grazie

risposta

11

La sua non è molto semplice quindi mi permette di utilizzare un po 'di aritmetica modulo qui in questo modo:

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! grazie – philstra

+1

Questo è un custode @anubhava !! +1 –

+0

Prego, felice che abbia funzionato. – anubhava

0

Questo potrebbe funzionare per voi:

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