LINUX.ORG.RU
Форум — Admin  

команда sed -n '/maj: /p'

 


0

1

Подскажите что такое «maj:» Прочитал маны, изучил команды, но блин, : - это метка и имя после нее идет, причем maj нигде не объявляется до этого. Находится это в скрипте драйвера и под новой версией ядра не выполняется вот такое условие «for module in `sed -n '/^mod: /p' $INFO | sed 's/^mod: //g'`», INFO - путь до файла устройства в proc, а под старой версией выполняется! как так



Последнее исправление: gashik (всего исправлений: 1)

ну, первый sed, похоже, используется вместо grep (пропускает только строки, начинающиеся с «mod: »), а второй sed из прошедшего выкусывает этот префикс «mod: », оставляя только, видимо, названия модулей

разница скорее всего в том, что в старой версии ядра были модули, а в новой — их нет

anonymous
()

Прочитал маны, изучил команды, но блин, : - это метка и имя после нее идет,

Плохо читал. /re/ - это поиск по регулярному выражению

router ★★★★★
()

sed -n '/maj: /p'
что такое «maj:»

Часть регулярного выражения.

Прочитал маны

Но не поняли. Бывает.

3.2 Selecting lines with `sed'
==============================
Addresses in a `sed' script can be in any of the following forms:

...

`/REGEXP/'
     This will select any line which matches the regular expression
     REGEXP.  If REGEXP itself includes any `/' characters, each must
     be escaped by a backslash (`\').

     The empty regular expression `//' repeats the last regular
     expression match (the same holds if the empty regular expression is
     passed to the `s' command).  Note that modifiers to regular
     expressions are evaluated when the regular expression is compiled,
     thus it is invalid to specify them together with the empty regular
     expression.

— (info "(sed) Addresses")

Zmicier ★★★★★
()

for module in `sed -n '/^mod: /p' $INFO | sed 's/^mod: //g'`

Да, а все вместе, это всего-навсего мудацкий способ сделать что-то такое:

while read _mod module; do
    [[ $_mod == 'mod:' ]] || continue
    ...
done < "$INFO"
Zmicier ★★★★★
()
Ответ на: комментарий от router

Да, вроде понял, это выбор строк с таким условием, просто когда куча команд - кажется что любое слово команда)) Сейчас просмотрел файл по адресу, да, в нем есть такие строки maj и mod, но, видимо в новой версии нет имени модуля mod, но по какому условию «for module in» заходит внутрь? Если оно не пустое и все? Значит sed в новой версии возвращает пустоту потому что в файле уже нет названия модуля?

gashik
() автор топика
Ответ на: комментарий от Zmicier

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

gashik
() автор топика
Ответ на: комментарий от Zmicier

Да, а все вместе, это всего-навсего мудацкий способ сделать что-то такое:

[[ $_mod == 'mod:' ]] || continue

Кхм. переходы на метку и прерывания цикла и есть «мудацкий способ» и давно моветон

router ★★★★★
()
Ответ на: комментарий от router

Кхм. переходы на метку и прерывания цикла и есть «мудацкий способ» и давно моветон

Ой-ой. И как же вы предлагаете? На каждую проверку по уровню вложенности?

Zmicier ★★★★★
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.