31

drBatty пишет:

Я доки видел, но таки не вдавался. Потому не помню.чёрт его знает, что это за НЁХ.

тогда хоть подскажите тогда, где они? в /usr/src/linux/Documentation/ про это нет...

drBatty пишет:

нет. Продолжать забивать шурупы молотком, ибо - работает. Ненадёжно, криво, сложно и долго; ну и хрен с ним. Разве это повод учится пользоваться отвёрткой?

я просто завинтил крестовой шуруп плоской отвёрткой... может не так удобно, как крестовой, но шуруп в стене...

drBatty пишет:

т.е. в нашем случае нужно grep и sed записать одним скриптом, причём так, что-бы в этом скрипте было как можно меньше структурных единиц, например команд s, ну а потом нам придётся решить

кстати... ну и как же это всё записать в один sed-скрипт?

drBatty пишет:

по вашему, правильный ответ в ЕДИНСТВЕННОМ случае это значит "работает"?

ИМХО можно условно считать программу рабочей, пока не будет найден контрпример. на многоядерных системах оно тоже работает правильно... ИМХО должно и на остальных SMP работать...

drBatty пишет:

Программа может быть "рабочей и удобной", и "нерабочей и неудобной".

только вот "удобная" это точно такой же НЁХ

95% процентов проблем находятся между клавиатурой и стулом.

32

Fat-Zer пишет:

тогда хоть подскажите тогда, где они?

если б нашёл - то я бы их процитировал хотя-бы. ac

Fat-Zer пишет:

кстати... ну и как же это всё записать в один sed-скрипт?

что, всё? с sort -u таки попроще. И уже можно сделать, если прочитать прошлые сообщения. Можно и без sort -u, это сложнее, и интереснее.

Fat-Zer пишет:

ИМХО можно условно считать программу рабочей, пока не будет найден контрпример

я не физик. да и физики тоже так не считают.

Fat-Zer пишет:

только вот "удобная" это точно такой же НЁХ

ага. хорошо, пусть будет

Fat-Zer пишет:

очевидный интерфейс

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

33

drBatty пишет:

что, всё? с sort -u таки попроще. И уже можно сделать, если прочитать прошлые сообщения. Можно и без sort -u, это сложнее, и интереснее.

вы покажите хоть как без grep'а сделать... болей-менее простым способом, чтобы это не уменьшило читаемость, которая, приходится признать, и так не на высоте.

drBatty пишет:

я не физик. да и физики тоже так не считают.

я их как раз думал упомянуть их тут аль нет =)

drBatty пишет:

очевидный интерфейс

да... забыл дописать, что под интерфейсом тут понимаю не пользовательский, а программный, ну чтоб точки над "и" расставить...

95% процентов проблем находятся между клавиатурой и стулом.

34

Fat-Zer пишет:

вы покажите хоть как без grep'а сделать... болей-менее простым способом

drBatty пишет:

sed '/условие/{скрипт;}'

Fat-Zer пишет:

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

drBatty пишет:

Оно и читается легче, теми кто с sed знаком (кто не знаком всё равно не распарсит).

Fat-Zer пишет:

да... забыл дописать, что под интерфейсом тут понимаю не пользовательский, а программный, ну чтоб точки над "и" расставить...

ага.

drBatty пишет:

ну если рискнуть, и заглянуть внутрь маздайного приложения, мы и увидим знакомые костыли tongue
что, кстати, сильно облегчает их взлом.

потому как в логически разрозненные кусочки намного проще вставить свою букашку. Вы это называете "хорошим программным интерфейсом", я это называю глючащим и тормозным РЕШЕТОМ.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

35 (28.03.2012 05:03:34 отредактировано Fat-Zer)

drBatty пишет:

sed '/условие/{скрипт;}'

дурачком прикидываетесь или и правда не понимаете? итак, почему это тут не работает, если тупо записать:
на входе:

processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
...

как скрипт работает:

/processor|core id|physical id/{ # на первой строке срабатывает, в буфере: "processor       : 0"
    N # читаем вторую строку, в буфере "processor       : 0\nvendor_id       : GenuineIntel"
    N # читаем вторую строку, в буфере "processor       : 0\nvendor_id       : GenuineIntel\ncpu family      : 6"
    s/[^:]*: (.*)\n[^:]*: (.*)\n[^:]*: (.*)/\1 \2 \3/ # на выходе "0 GenuineIntel 6"
} # и так три раза.
95% процентов проблем находятся между клавиатурой и стулом.

36

Fat-Zer пишет:

если тупо записать:

ну а если подумать?
Понятное дело, что у вас прочитается не та строчка. И разве не ясно, как это исправить?
Можно конечно начать разбор с "processor", а потом ждать "physical id", ну и потом ждать "core id", загружая в цикле строчки... Но есть способ лучше - использовать команду H вместо N, и произвести парсинг после получения "core id". Разве это не очевидно? Не? Ну тогда зачем вы вообще используете sed? Сложно выучить такой примитивный ЯП на половину... Проще него разве что BrainFuck, но он и придуман как "простой", а sed придумана для обработки текстов. И свою задачу вополняет хорошо, не нуждаясь в дополнительных костылях (grep в данном случае - костыль, ибо никто не просил нас фильтровать строчки, это просто первое, что пришло вам в голову. Однако первое - почти всегда худшее.)

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

37

Fat-Zer, чё я взъелся-то так? А всё потому, что вы _одноразовый_ не протестированный и недоделанный однострок предложили в качестве общего решения. Типа - тупо скопипастил, и получил результат. Подход правильный, вот только этот однострок должен быть далеко не одноразовым, и написанным человеком, который прекрасно понимает значение входных данных, и используемый ЯП. Ну а значение входных данных мы, к сожалению не понимаем ac

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

38

мда... чего-то меня переклинело, что с H намного сложнее будет - хотел сначала читать N'м, а потом парсить и добавлять в холд... в общем путь какая-то...
пара вариантов:

sed -rne '/processor|core id|physical id/{s/.*: (.*)/\1 /;H};/^$/{x;s/\n//g;p}'
sed -rne '/processor|core id|physical id/{s/.*: (.*)/\1 /;H};x;/.*\n.*\n.*\n/{s/\n//g;p;s/.*//};x'

ну или итоговые варианты:

sed -rne '/core id|physical id/{s/.*: (.*)/\1 /;H};/^$/{x;s/\n//g;p}'  /proc/cpuinfo | wc -l
sed -rne '/core id|physical id/{s/.*: (.*)/\1 /;H};x;/.*\n.*\n/{s/\n//g;p;s/.*//};x' /proc/cpuinfo | wc -l
95% процентов проблем находятся между клавиатурой и стулом.

39

Fat-Zer пишет:

ну или итоговые варианты:

sed -rne '/core id|physical id/{s/.*: (.*)/\1 /;H};/^$/{x;s/\n//g;p}'  /proc/cpuinfo | wc -l

ну не так уж и сложно в итоге получилось bx

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)