Hi, I'm looking for a command to extract lines from a large text file, a password file. A typical user has a username made from a letter followed by their id-number. m9718508:pw:9301:840: Lynch :/home/pgstud/m9718508:/bin/bash So for instance if I need to extract lines where; the 1st field, the username begins with an m and the 4th field, the group contains exactly 850 cat passwdfile | grep ^m | grep 850 > output is close but fails if the value 850 appears outside the 4th field. In the above example which should be ignored 850 appears in the username and home directory and is therefore extracted. Any ideas. Thanks, Tony
Greetings, On Wed, Aug 15, 2012 at 7:52 PM, Tony Molloy <tony.molloy at ul.ie> wrote:> > Hi, > > > So for instance if I need to extract lines where; > > the 1st field, the username begins with an m > and > the 4th field, the group contains exactly 850 >cut -d: -f1,4 <input-filename> -- Regards, Rajagopal
Hello Tony, On Wed, 15 Aug 2012 15:22:10 +0100 Tony Molloy <tony.molloy at ul.ie> wrote:> > Hi, > > I'm looking for a command to extract lines from a large text file, a > password file. A typical user has a username made from a letter > followed by their id-number. > > m9718508:pw:9301:840: Lynch :/home/pgstud/m9718508:/bin/bash > > So for instance if I need to extract lines where; > > the 1st field, the username begins with an m > and > the 4th field, the group contains exactly 850 > > cat passwdfile | grep ^m | grep 850 > output > > is close but fails if the value 850 appears outside the 4th field. In > the above example which should be ignored 850 appears in the username > and home directory and is therefore extracted.Something like `grep -E '^m.+:.*:.*:850:'` maybe? Regards, -- wwp -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 198 bytes Desc: not available URL: <http://lists.centos.org/pipermail/centos/attachments/20120815/5297d441/attachment-0001.sig>
Em 15-08-2012 11:22, Tony Molloy escreveu:> > Hi, > > I'm looking for a command to extract lines from a large text file, a > password file. A typical user has a username made from a letter > followed by their id-number. > > m9718508:pw:9301:840: Lynch :/home/pgstud/m9718508:/bin/bash > > So for instance if I need to extract lines where; > > the 1st field, the username begins with an m > and > the 4th field, the group contains exactly 850 > > cat passwdfile | grep ^m | grep 850 > output > > is close but fails if the value 850 appears outside the 4th field. In > the above example which should be ignored 850 appears in the username > and home directory and is therefore extracted. > > Any ideas.]$ cat testcentoslist m9718508:pw:9301:840: Lynch :/home/pgstud/m9718508:/bin/bash m9718308:pw:9301:850: Lynch :/home/pgstud/m9718508:/bin/bash m9718208:pw:9301:840: Lynch :/home/pgstud/m9718508:/bin/bash m9718508:pw:9301:840: Lynch :/home/pgstud/m9718908:/bin/bash ]$ cat testcentoslist | egrep ^m.*:.*:.*:850: m9718308:pw:9301:850: Lynch :/home/pgstud/m9718508:/bin/bash -- Marcelo Beckmann Suporte Corporativo - suporte at webers.com.br Webers Tecnologia - http://www.webers.com.br Curitiba (PR) (41) 3094-6600 Rio de Janeiro (RJ) (21) 4007-1207 S?o Paulo (SP) (11) 4007-1207
wwp wrote:> On Wed, 15 Aug 2012 15:22:10 +0100 Tony Molloy <tony.molloy at ul.ie> wrote: >> >> I'm looking for a command to extract lines from a large text file, a >> password file. A typical user has a username made from a letter >> followed by their id-number. >> >> m9718508:pw:9301:840: Lynch :/home/pgstud/m9718508:/bin/bash >> >> So for instance if I need to extract lines where; >> the 1st field, the username begins with an m >> and the 4th field, the group contains exactly 850 >> >> cat passwdfile | grep ^m | grep 850 > output >> >> is close but fails if the value 850 appears outside the 4th field. In >> the above example which should be ignored 850 appears in the username >> and home directory and is therefore extracted. > > Something like `grep -E '^m.+:.*:.*:850:'` maybe?Complicated. awk '{ if ($1 ~ /^m/ && $4 == "850" ) { print $0;}}' /etc/passwd mark "awk! awk!*" * No, I'm still not a seagull....
On 08/15/2012 10:22 AM, Tony Molloy wrote:> > Hi, > > I'm looking for a command to extract lines from a large text file, a > password file. A typical user has a username made from a letter > followed by their id-number. > > m9718508:pw:9301:840: Lynch :/home/pgstud/m9718508:/bin/bash > > So for instance if I need to extract lines where; > > the 1st field, the username begins with an m > and > the 4th field, the group contains exactly 850 > > cat passwdfile | grep ^m | grep 850> output > > is close but fails if the value 850 appears outside the 4th field. In > the above example which should be ignored 850 appears in the username > and home directory and is therefore extracted. > > Any ideas. > > Thanks, > > Tony > _______________________________________________ > CentOS mailing list > CentOS at centos.org > http://lists.centos.org/mailman/listinfo/centos >[mlapier at mushroom ~]$ cat tmpfile m9718508:pw:9301:840: Lynch :/home/pgstud/m9718508:/bin/bash m1234567:pw:9302:850: Lynch :/home/pgstud/m1234567:/bin/bash [mlapier at mushroom ~]$ grep ^m tmpfile | grep ":850:" m1234567:pw:9302:850: Lynch :/home/pgstud/m1234567:/bin/bash [mlapier at mushroom ~]$ -- _ ?v? /(_)\ ^ ^ Mark LaPierre Registerd Linux user No #267004 www.counter.li.org ****