LINUX.ORG.RU

[bash]Выделение имён пользователей из файла пра доступа к DAV-SVN (Apache).

 


0

0

Есть файл dav_svn.authz c описанием прав доступа пользователей к 
репозитариям SNV'а. Файл примерно такого вида (только репозитариев не 
2, а полдюжины): 

[testrep:/]
testuser = r 
root = rw
robocop = rw
terminator = rw
spiderman = rw
spawn = rw

[lib:/]
root = rw
nightman = rw
batman = rw
yoda = rw
bond = rw
diablo = r

Нужно из него средствами bash, sed, grep и некоторых других извлечь, 
например, список пользователей репозитория testrep. Алгоритм я себе 
представляю примерно такой: 

1. Вырезаем кусок файла отвечающий за один репозитарий
2. Отрезаем первую строку (в которой название репозитария)
3. В каждой строке sed'ом выделяем имя пользователя
4. ???
5. PROFIT

Если с пунктами 3, 4 и 5 всё более менее понятно, то с 1 и 2 не 
очень. sed и grep работают со строками, а чем выделить несколько 
строк из файла? Вообще, какие команды есть для работы со строками в 
файле , а не с подстроками в строках? В смысле не sed/grep. 
★★★★★

Обычно ещё есть awk. Ещё есть оператор read в bash. Ещё можно прогрепать файл с выводом номеров строк и потом резать с помощью head/tail.

И sed умеет работать со строками. Допустим такое выражение:

sed -n '/^\[testrep:\/\]/,/^\[/p' dav_svn.authz

даст вам часть файла из которой нужно вырезать строки с названиями репозитариев и перейти к п.3. А если разобраться со всеми командами sed'а, то можно очень много чего сочинить.

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

Маня рулят.

Понятно, буду читать документацию по awk, read, head, tail и sed.

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