У меня есть файл, где я хотел выбрать строки, где столбец $ 3 одинаковый. Теперь я сгруппировал их, но я хочу сделать определенные действия над этими строками в случае, если столбец $ 1 (и/или $ 2) удовлетворяет определенному условию.Выбор совпадающих столбцов и действий на этих линиях
Например, если все значения в $ 1 и $ 2 (внутри группы строк, которые имеют одинаковое значение в $ 3), находятся в пределах 0,1 друг от друга, я хочу взять среднее число столбцов $ 1 и $ 2 (для этого группа, которая имеет тот же $ 3). Если он больше, я хочу просто распечатать эти строки, не принимая в среднем.
Мой вход что-то вроде:
1.3 22.5 ALFA 45 50
1.4 22.6 ALFA 45 50
1.5 22.7 ALFA 45 50
1.6 22.8 ALFA 45 51
5.5 8.5 BETA 53 15
5.6 8.6 BETA 53 15
5.5 8.5 BETA 53 15
7.6 10.6 GAMA 75 13
7.7 10.7 GAMA 76 13
12 11.5 GAMA 75 13
4.5 4.5 DELTA 65 12
4.6 5.7 DELTA 65 12
12.1 8 EPS 44 16
12.2 8 EPS 44 16
Я хочу, чтобы мой выход будет:
out1.txt:
5.53 8.53 BETA 53 15
12.15 8 EPS 44 16
out2.txt:
1.3 22.5 ALFA 45 50
1.4 22.6 ALFA 45 50
1.5 22.7 ALFA 45 50
1.6 22.8 ALFA 45 50
7.6 10.6 GAMA 75 13
7.7 10.7 GAMA 76 13
12 11.5 GAMA 75 13
4.5 5.6 DELTA 65 12
4.6 9 DELTA 65 12
образец ввода/вывода поможет вам получить больше ответов и проверить скрипты. Это кажется тривиальным упражнением для 'awk' – karakfa
Возможно, я был неясен в вопросе. У меня нет скрипта для проверки, я просто не знаю, как написать его для выбора строки, когда я не выбираю определенный шаблон, а только определенное соответствие. –
люди могут проверить свои собственные сценарии независимо от того, соответствует ли он вашему выходу или нет. Написание хорошей спецификации - нетривиальное упражнение. Например, что, если ваши значения в 3 доллара заполняют диапазон «0,9 0,95 1 1,05 1,1 1,1 1,2» или группируются вокруг двух значений? (бимодальный) '0,9 1,1 0,95 2 2,01 1,91' – karakfa