Сравните данные в 5-м столбце с 6-м столбцом и выведите элемент с наименьшей разницей

OSX "vi" выглядит как vim. В сообщении о версии указано (для El Capitan ):

VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Oct 27 2015 16:22:14)
Compiled by root@apple.com
Normal version without GUI.  Features included (+) or not (-):

Существует небольшая вероятность, что вы не используете vim, но никто не предложил подходящей альтернативы.

vim принимает последовательности клавиш курсора в режиме вставки.

Однако есть одна ловушка, если фактическое поведение терминала не соответствует описанию терминала, заданному с помощью переменной среды TERM . Например, в описании терминала "linux" не используется режим приложения , и если вы установили TERM на это значение при фактической работе в терминале, который был инициализирован для использования режим приложения , тогда vim не будет ожидать escape O B последовательность, так как он ищет escape [ ] B . В результате вы получите вставку B при нажатии клавиши со стрелкой вниз.

Дополнительная литература:

1
14.03.2019, 11:37
2 ответа

Вот мое решение на Python.

with open('/path/to/file', 'r') as f:
    for line in f:
        x=line.split(',')
        y=x[4].split('|')
        print(','.join(x[:4]) + ',' + str(min(y, key=lambda z: abs(float(z)-float(x[5])))))

Если у вас есть что-то вроде Pyed Piper, также известного как pyp, вы можете запустить его прямо из командной строки терминала:https://code.google.com/archive/p/pyp/

1
27.01.2020, 23:22

Поскольку требуется решение AWK, я предоставлю его.

awk -F, 'NF>4{
        n=split($5,a,"|")
        l=a[0];
        for(i=1;i<n;i++)
                if((a[i]-$6)^2<(l-$6)^2)
                        l=a[i];
        print $1","$2","$3","$4","l                                                                                                                                                                                
}' input > output
2
27.01.2020, 23:22

Теги

Похожие вопросы