Python 用于查找和grep组的脚本

Python 用于查找和grep组的脚本,python,bash,scripting,ksh,nis,Python,Bash,Scripting,Ksh,Nis,我正在努力编写bash脚本或python脚本来从文件中查找字符串 例如,我需要搜索usrname4,如果找到它,我需要获取它的组。在本例中,它是group1。由于文件格式很复杂,我正在寻找一些提示 文件内容的格式如下 group1 (-,usrname1,abc.co.uk)\ (-,usrname1,xyz.co.uk)\ (-,usrname2,abc.co.uk)\ (-,usrname2,xyz.co.uk)\

我正在努力编写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)\

我添加了以下规范:

  • 可以通过查找以无空格开头的行来找到组
  • 组名不带空格
  • 当用户名出现多次时,只查看第一次
  • 搜索比赛前提到的最后一组
首先选择所有组和所有匹配行。
从该集合中查找第一场比赛前的最后一行,该行必须是组

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

到目前为止你尝试了什么?这个问题似乎根本不包括任何解决问题的尝试。请编辑问题以显示您尝试了什么,并显示您遇到的具体障碍。有关详细信息,请参阅。如果一行包含组,请逐行读取文件,然后将其解压缩并存储到变量中。如果一行包含您可以中断循环的所需用户名,那么您的目标组就是变量的内容。可以在纯bash(读行循环时)、awk甚至sed(使用其hold缓冲区存储组)中轻松实现。您好Wogsland和Andeas,如果我的提问方式不正确,请道歉。实际上,我已经用了很多伪代码来实现这一点。但是没有成功。因此,我要求在这里得到一些光。谢谢你的回复。太好了。谢谢你的回复。它正在工作。但是,如果我在两个组中有一个用户名,它仍然给第一个组,而不给另一个组。您能帮助我获取给定用户名所属的所有组吗?将
head-1
替换为
egrep-Ev“^--$^,