инкремент буквенных переменных в awk - PullRequest
6 голосов
/ 03 февраля 2012

В таком сценарии для разделения большого файла на строку:

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

Это создает out_1.txt, out_2.txt и т. Д.

Как мне получить буквенные префиксы, созданные с помощью split (out_aa.txt, out_ab.txt, out_ac.txt, ...)?

Спасибо

Ответы [ 2 ]

11 голосов
/ 03 февраля 2012

Это не очень прямолинейно, поэтому позвольте мне использовать здесь некоторую арифметику по модулю, например:

awk '/MYSTRING/ {n++} {p=97+int(n/26); q=(n%26)+97; s=sprintf("out_%c%c.txt", p, q); print > s}' LARGEFILE
0 голосов
/ 03 февраля 2012

Это может работать для вас:

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