Скрипт для поиска и поиска группы - PullRequest
0 голосов
/ 28 января 2020

Я изо всех сил пытаюсь написать сценарий bash или python, чтобы найти строку из файла.

Например, мне нужно найти usrname4, и если он найден, мне нужно приведи свою группу. В этом случае это group1. Поскольку формат файла хитрый, я смотрю после некоторых подсказок.

Содержимое файла в формате ниже.

group1    (-,usrname1,abc.co.uk)\
          (-,usrname1,xyz.co.uk)\
          (-,usrname2,abc.co.uk)\
          (-,usrname2,xyz.co.uk)\
          (-,usrname3,abc.co.uk)\
          (-,usrname3,xyz.co.uk)\
          (-,usrname4,abc.co.uk)\
          (-,usrname4,xyz.co.uk)\
          (-,usrname5,abc.co.uk)\
          (-,usrname5,xyz.co.uk)\
          (-,usrname6,abc.co.uk)\
          (-,usrname6,xyz.co.uk)\
          (-,usrname7,abc.co.uk)\
          (-,usrname7,xyz.co.uk)\
group2    (-,usrname8,abc.co.uk)\
          (-,usrname8,xyz.co.uk)\
          (-,usrname9,abc.co.uk)\
          (-,usrname9,xyz.co.uk)\
          (-,usrname10,abc.co.uk)\
          (-,usrname10,xyz.co.uk)\
          (-,usrname11,abc.co.uk)\
          (-,usrname11,xyz.co.uk)\
          (-,usrname12,abc.co.uk)\
          (-,usrname12,xyz.co.uk)\
          (-,usrname13,abc.co.uk)\
          (-,usrname13,xyz.co.uk)\
          (-,usrname14,abc.co.uk)\
          (-,usrname14,xyz.co.uk)\

1 Ответ

0 голосов
/ 28 января 2020

Я добавил следующие спецификации:

  • Чтобы найти группу, найдите строку, которая начинается без пробела
  • Имя группы не содержит пробелов
  • Когда имя пользователя встречается более одного раза, посмотрите только на первый
  • Поиск последней группы, упомянутой перед совпадением

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

usr=usrname4
grep -Eo "^[^ ]+|,${usr}," file | grep -B1 ",${usr}," | head -1
...