SPLIT файл по Script (bash, cpp) - числа в столбцах - PullRequest
1 голос
/ 04 августа 2011

У меня есть файлы с некоторыми столбцами, заполненными числами (float). Мне нужно разделить эти файлы в соответствии со значением в одном из столбцов (можно установить в качестве первого). Это значит, когда

a b c

в моем файле значение c fullfils 0.05<=c<=0.1, затем создайте файл с именем c и скопируйте туда все столбцы, которые заполняют условие c ... Это возможно? Я могу кое-что маленькое с bash, awk, кое-что также с c ++. Я искал некоторые решения, но - конечно, я могу сортировать данные и читать только первый номер строки .. Я не знаю. Пожалуйста, очень пожалуйста. Спасибо Jane

Ответы [ 2 ]

1 голос
/ 04 августа 2011

Как вы упомянули в awk, основное правило в awk - «сопоставить строку (по умолчанию или с регулярным выражением, условием или номером строки)» И «сделать что-то, потому что вы нашли совпадение».

awk использует такие значения, как $ 1, $ 2, $ 3, чтобы указать, какой столбец в текущей строке данных он просматривает.$ 0 относится ко всей строке.Итак ...

awk '
 BEGIN{
    afile="afile.txt"
    bfile="bfile.txt"
    cfile="cfile.txt"
 }

{
  # test c value between .05 and .1
  if ($3 >= 0.05 && $3 <= 0.1) print $0 > cfile
} inputData

Обратите внимание, что я проверяю значение третьего столбца (c в вашем примере).Вы можете использовать $ 2 для проверки столбца b и т. Д.

Если вы не знаете, какой тип проверки условий я включил >= 0.5 && $3 <= 0.1, у вас впереди некоторое обучение.

Вопросы в форме 1. У меня есть этот вход, 2. Я хочу этот вывод.3. (но) я получаю этот вывод, 4. с этим кодом .... {код здесь} .... гораздо больше шансов получить разумный ответ за разумное количество времени; -)

Надеюсь, это поможет.

PS, поскольку вы выглядите новым пользователем, если вы получаете ответ, который помогает вам, пожалуйста, помните, чтобы пометить его как принятый, и / или дать ему + (или-) как полезный ответ.

1 голос
/ 04 августа 2011

Если я правильно понимаю ваши требования:

awk '{print > $3}' file ...
...