2013-07-21 2 views
0

У меня есть эта большая матрица из 50 строк и столбцов 1,5 М. Из этих столбцов 1.5M первые два являются моими заголовками.Разделение данных по столбцам

Я пытаюсь разделить свои данные по столбцам на мелкие кусочки. Так, например, каждый маленький набор будет состоять из 50 строк и 100 столбцов. Но каждая маленькая информация должна иметь первые два столбца, упомянутые выше как заголовки.

Я попытался

awk '{print $1"\t"$2"\t"}' test | cut -f 3-10 
awk '{print $1"\t"$2"\t"}' test | cut -f 11-20 
... 

или

cut -f 1-2 | cut -f 3-10 test 
cut -f 1-2 | cut -f 11-20 test 
... 

, но ни один из вышеперечисленного не работает.

Есть ли эффективный способ сделать это?

+0

, что программное обеспечение в своем уме будет выходной 1.5M столбцов (вы имеете в виду M, как в миллион или M, как и в римские цифры? за 1000?) (в любом случае это сумасшедший, просто разные порядки ;-)). Не можете ли вы получить данные, переданные по-другому, 50 столбцов, на 1,5 миллиона строк? Удачи! – shellter

ответ

0

Один способ с . Я не знаю, может ли это (awk) обрабатывать такое большое количество столбцов, но попробуйте. Он использует оператор модуля, чтобы разрезать линию на каждое определенное количество столбцов.

awk '{ 
     ## Print header of first line. 
     printf "%s%s%s%s", $1, FS, $2, FS 
     ## Count number of columns printed, from 0 to 100. 
     count = 0 
     ## Traverse every columns but the first two keys. 
     for (i = 3; i <= NF; i++) { 
      ## Print header again when counted 100 columns. 
      if (count != 0 && count % 100 == 0) { 
       printf "%s%s%s%s%s", ORS, $1, FS, $2, FS 
      } 
      ## Print current column and count it. 
      printf "%s%s", $i, FS 
      ++count 
     } 
     ## Separator between splits. 
     print ORS 
    } 
' infile 

Я проверил его с двумя линиями и 4 столбцов вместо 100. Вот тестовый файл:

key1 key2 one two three four five six seven eight nine ten 
key1 key2 one2 two2 three2 four2 five2 six2 seven2 eight2 nine2 ten2 

И результаты в:

key1 key2 one two three four 
key1 key2 five six seven eight 
key1 key2 nine ten 

key1 key2 one2 two2 three2 four2 
key1 key2 five2 six2 seven2 eight2 
key1 key2 nine2 ten2 
Смежные вопросы