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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.