The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Сортировка 16-разрядных чисел"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Сортировка 16-разрядных чисел"  +/
Сообщение от universite email(ok) on 17-Мрт-14, 02:25 
Есть список:

...
ngeth0  00000191
ngeth1  00000194
ngeth2  00000197
ngeth3  0000019a
ngeth4  0000019d
ngeth5  000001a0
ngeth6  000001a3
ngeth7  000001a6
ngeth8  000001a9
ngeth9  000001ac
...

Нужно найти максимальное значение ячейки второго столбца и выдать всю строку.
Идеально, выдать сразу номер этого ngeth.

P.S. перл не предлагать
P.P.S. идеально обойтись чисто awk и sort

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


2. "Сортировка 16-разрядных чисел"  +/
Сообщение от universite email(ok) on 17-Мрт-14, 04:49 

...  | sort -k 2 | tail -1 | awk '$1 ~ /ngeth/ { print $1;}' | tr -d ngeth

Как-то слишком длинно и не по фен-шую :(

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Сортировка 16-разрядных чисел"  +/
Сообщение от михалыч (ok) on 17-Мрт-14, 09:36 
на те вам

справа на лево
awk '$2 > max {max = $2; number = $1 = substr ($1, 6)} END { print number }' file

слева на право
awk '{ if (max < $2) {max = $2; number = $1 = substr ($1, 6)} } END { print number }' file

now feng shui? you understand?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Сортировка 16-разрядных чисел"  +/
Сообщение от Andrey Mitrofanov on 17-Мрт-14, 11:47 
> на те вам
> справа на лево
> awk '$2 > max {max = $2; number = $1 = substr($1, 6)} END { print number }' file
> now feng shui? you understand?

Нет, now:

awk 'NR==2&&sub("^ngeth","",$1)&&(max==""||$2>max){max=$2;number=$1}END{print number}' <file

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Сортировка 16-разрядных чисел"  +/
Сообщение от universite email(ok) on 17-Мрт-14, 14:30 
> Нет, now:
> awk 'NR==2&&sub("^ngeth","",$1)&&(max==""||$2>max){max=$2;number=$1}END{print
> number}' <file

Нет. Все три примеры выдают пустую строку.


# ngctl list
There are 24 total nodes:
  Name: ngeth15         Type: eiface          ID: 00000201   Num hooks: 1
  Name: ipfw            Type: ipfw            ID: 00000001   Num hooks: 0
  Name: em0             Type: ether           ID: 00000002   Num hooks: 0
  Name: em1             Type: ether           ID: 00000003   Num hooks: 0
  Name: ngeth16         Type: eiface          ID: 00000204   Num hooks: 1
  Name: ngeth0          Type: eiface          ID: 000001c4   Num hooks: 1
  Name: em2             Type: ether           ID: 00000004   Num hooks: 0
  Name: em3             Type: ether           ID: 00000005   Num hooks: 2
  Name: ngeth1          Type: eiface          ID: 000001c7   Num hooks: 1
  Name: ngeth2          Type: eiface          ID: 000001ca   Num hooks: 1
  Name: vlan            Type: vlan            ID: 0000018f   Num hooks: 19
  Name: ngctl41992      Type: socket          ID: 00000216   Num hooks: 0
  Name: ngeth6          Type: eiface          ID: 000001d6   Num hooks: 1
  Name: ngeth7          Type: eiface          ID: 000001d9   Num hooks: 1
  Name: ngeth8          Type: eiface          ID: 000001dc   Num hooks: 1
  Name: ngeth9          Type: eiface          ID: 000001df   Num hooks: 1
  Name: ngeth3          Type: eiface          ID: 000001e9   Num hooks: 1
  Name: ngeth4          Type: eiface          ID: 000001ec   Num hooks: 1
  Name: ngeth5          Type: eiface          ID: 000001ef   Num hooks: 1
  Name: ngeth10         Type: eiface          ID: 000001f2   Num hooks: 1
  Name: ngeth11         Type: eiface          ID: 000001f5   Num hooks: 1
  Name: ngeth12         Type: eiface          ID: 000001f8   Num hooks: 1
  Name: ngeth13         Type: eiface          ID: 000001fb   Num hooks: 1
  Name: ngeth14         Type: eiface          ID: 000001fe   Num hooks: 1


# ngctl list | awk 'NR==2&&sub("^ngeth","",$1)&&(max==""||$2>max){max=$2;number=$1}END{print number}'

# ngctl list | awk ' $2 ~ /ngeth/ {print $2"\t"$6}' | sort -k 2 | tail -1 | awk '$1 ~ /ngeth/ { print $1;}' | tr -d ngeth
16


Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Сортировка 16-разрядных чисел"  +/
Сообщение от михалыч (ok) on 17-Мрт-14, 16:45 
> Нет. Все три примеры выдают пустую строку.

не верю ))

Ну подогнать под ответ могли бы и сами, вконец разленились? ))

awk '$2~/ngeth/ {if(max<$6){max=sprintf(x$6);number=$2=substr($2,6)}}END{print number}' file

16

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Сортировка 16-разрядных чисел"  +/
Сообщение от universite email(ok) on 17-Мрт-14, 16:59 
>> Нет. Все три примеры выдают пустую строку.
> не верю ))
> Ну подогнать под ответ могли бы и сами, вконец разленились? ))

Подгонять под ответ - это ведь не для диплома :)
У мну уже перед глазами плывут переменные, разрядности и лексика разных языков

> awk '$2~/ngeth/ {if(max<$6){max=sprintf(x$6);number=$2=substr($2,6)}}END{print
> number}' file
> 16

так работает.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "Сортировка 16-разрядных чисел"  +/
Сообщение от михалыч (ok) on 17-Мрт-14, 17:05 
> Подгонять под ответ - это ведь не для диплома :)

да "шутю" это я так, криво ))

> У мну уже перед глазами плывут переменные, разрядности и лексика разных языков

ну так надо выспаться и отдохнуть, работа не волк..

да, и вариант Andrey Mitrofanov с sub тоже работает

awk '$2~/ngeth/ && sub("ngeth","",$2) {if(max<$6){max=sprintf(x$6);number=$2}}END{print number}' file

awk '$2~/ngeth/ && sub(/^ngeth/,"",$2) {if(max<$6){max=sprintf(x$6);number=$2}}END{print number}'

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "Сортировка 16-разрядных чисел"  +/
Сообщение от Andrey Mitrofanov on 17-Мрт-14, 17:50 
>> Подгонять под ответ - это ведь не для диплома :)
> да "шутю" это я так, криво ))

Студент - молодец. Заинтриговал дедушек.

> да, и вариант Andrey Mitrofanov с sub тоже работает
> awk '$2~/ngeth/ && sub("ngeth","",$2) {if(max<$6){max=sprintf(x$6);number=$2}}END{print
> number}' file

Не-не, это не моё! :) Я "~/ngeth/" _заменил sub()-ом в условии. И [условие из] if во внешее условие вынкс. И против "sprintf(x" я решительно :D против.

Мой феншуй также требует "ngeth" -> "^ngeth" и ограничения по "NF>..." хотя бы, но это я уже привередничаю.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Сортировка 16-разрядных чисел"  +/
Сообщение от universite email(ok) on 17-Мрт-14, 17:56 
>> Подгонять под ответ - это ведь не для диплома :)
> да "шутю" это я так, криво ))
>> У мну уже перед глазами плывут переменные, разрядности и лексика разных языков
> ну так надо выспаться и отдохнуть, работа не волк..

да-да. писал вопросы в  конце "рабочего дня".

Этот скрипт уже, наверное, не понадобится.
Я нашел более простой способ определять вланы у неименованных интерфесов ngeth%%.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

11. "Сортировка 16-разрядных чисел"  +/
Сообщение от pavlinux (ok) on 17-Мрт-14, 21:48 
>[оверквотинг удален]
> ngeth2  00000197
> ngeth3  0000019a
> ngeth4  0000019d
> ngeth5  000001a0
> ngeth6  000001a3
> ngeth7  000001a6
> ngeth8  000001a9
> ngeth9  000001ac
> ...
>

Ну вы тут накуячили ...

... | sort -r -k2 | head -1

> Идеально, выдать сразу номер этого ngeth.

... | sort -r -k2 | head -1 | cut -d" " -f3

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

12. "Сортировка 16-разрядных чисел"  +/
Сообщение от universite email(ok) on 18-Мрт-14, 00:02 

> Ну вы тут накуячили ...

У тебя сортировка вверх, а у меня вниз + 3 проверки входящих данных.

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру