How to use Grep properly?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to use Grep properly?
# 1  
Old 07-01-2015
Display How to use Grep properly?

Hi Forum

Im making a script that takes multiple unix users and lists the users and the groups that the user is part of. the grouplist looks like this

Code:
grouplst="example_group1|example_group2|example_group3|example_group4"

I got most of it working but Im having trouble with a while loop that im using to filter out groups that dont matter.

Code:
 
        cntr3=1
        tempgrplst=$grouplist
        FilterIDgroups=""
        while (($cntr <= $groupcnt))
        do
                currentgroup=$(print $tempgrplst|awk -F '|' '{print $1}')
                cntr=$(($cntr + 1))
                print $IDgroups | grep $currentgroup >> $FilterIDgroups
                tempgrplst=${tempgrplst#*\|}
        done

I am trying to get only the groups that are in the grouplist to be in the variable FilterIDgroups. Sorry the variable names are bad, I had to change them to post them online.
# 2  
Old 07-01-2015
Alas you are leaving out the essential part - the contents of IDgroups. And, I'm nor sure I understand the underlying logics. Do you want a "logical AND" of the two group lists: grouplist and IDgroups?

BTW, the redirection >> $FilterIDgroups will fail as you assigned the empty string to FilterIDgroups.

---------- Post updated at 17:05 ---------- Previous update was at 17:02 ----------

And, you could eliminate a big portion of your code snippet by using an array:
Code:
IFS="|" grouparr=($grouplst )
while (( cntr < ${#grouparr[@]} )); do echo ${grouparr[((cntr++))]}, $cntr; done

And, you're assigning cntr3 but using cntr.
# 3  
Old 07-01-2015
the content of the IDgroups looks like this
Code:
memberOf: CN=example_group,OU=CL,OU=LOB,DC=prod,DC=test,DC=net
memberOf: CN=example_group2,OU=CL,OU=LOB,DC=prod,DC=test,DC=net

the cntr thing was a mistake when i was changing the variables for the forum.

also am I missing something with the array suggestion you gave me
Code:
        
        IFS="|" grouparr=($grouplst )
        while(( cntr < ${#grouparr[@]} ));
        do
                echo ${grouparr[((cntr++))]}, $cntr;
                currgrp=$(print $tempgrplst|awk -F '|' '{print $1}')
                tempgrplst=${tempgrplst#*\|}
        done

# 4  
Old 07-01-2015
You don't need currgrp any more - it's the grouparr[cntr] array element!

But - even if I still don't understand exactly what you're after, I still think all of this can be done with one single awk script.
# 5  
Old 07-01-2015
Another proposal that does not need a loop
Code:
IDgroups="\
memberOf: CN=example_group,OU=CL,OU=LOB,DC=prod,DC=test,DC=net
memberOf: CN=example_group2,OU=CL,OU=LOB,DC=prod,DC=test,DC=net"
grouplst="example_group1|example_group2|example_group3|example_group4"

printf "%s\n" "$IDgroups" | egrep "CN=($grouplst)," > $FilterIDgroups

If $IDgroups is a filename, change the latter to
Code:
egrep "CN=($grouplst)," < $IDgroups > $FilterIDgroups


Last edited by MadeInGermany; 07-01-2015 at 03:51 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Can't get mv to work properly

Trying to use mv in a shell script but for some reason this does not work: for f in *.wav;do mv $f $f.bwf;done I get this: usage: mv source target mv source ... directory So it's like I'm using 'mv' wrong but I can't see how. This works so the contens of the folder is read... (4 Replies)
Discussion started by: Oortone
4 Replies

2. Shell Programming and Scripting

Simple grep is not working properly on busybox

Hi, I'm trying to write shell scripts on busybox bash on windows and grep is not working for simple regular expression like $ grep FEN * bash: grep: Invalid argument but the same grep works fine if use the single file instead of asterisk $ grep FEN test $ Am I doing something... (5 Replies)
Discussion started by: prvnrk
5 Replies

3. Shell Programming and Scripting

How to paste properly?

I needed to view calendar for several months so I created a separate file for each and then pasted them like this: cal Dec 2011 > x1; cal Jan 2012 > x2; paste x1 x2 December 2011 January 2012 Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 1 2 ... (4 Replies)
Discussion started by: migurus
4 Replies

4. IP Networking

Not able to FTP properly

FTP error: ftp> dir */*/*/*.zip 227 Entering Passive Mode (10,58,132,123,204,83) 150 Here comes the directory listing 226 Transfer done (but failed to open directory) And the machine where am getting the file(Client machine) has the below mentioned vsftpd.conf file. Please let me know... (2 Replies)
Discussion started by: weknowd
2 Replies

5. IP Networking

Not able to FTP properly

FTP error: Connected to 10.58.132.123 (10.58.132.123). 220 (vsFTPd 2.0.5) 331 Please specify the password. 230 Login successful. 550 Failed to change directory. 227 Entering Passive Mode (10,58,132,123,235,54) 150 Here comes the directory listing. 226 Transfer done (but failed to open... (0 Replies)
Discussion started by: weknowd
0 Replies

6. Shell Programming and Scripting

cp not coping properly

Hi, I'm trying to copy the directories from one location(/tmp/source/) to other(/tmp/dest/). for this I have written a PERL script. snippet of code $sourcePath = "/tmp/source"; $destPath = "/tmp/dest"; opendir(DIR, $sourcePath ); while($dir = readdir(DIR)) { if($dir ne "." && $dir ne... (1 Reply)
Discussion started by: prashants
1 Replies

7. Shell Programming and Scripting

\n not working properly

Hi all, I'm trying to generate a series of txt files starting from a plain csv file part of my code: #!/bin/ksh INSTALLDIR=/Users/ME/Installdir CSV=CSV.csv TMP=/tmp/$(basename $0).txt tr -s "\r" "\n" < /$INSTALLDIR/$CSV > $TMP function Makefiles { printf '%24s:%30s\n' "sometext"... (1 Reply)
Discussion started by: Jive Spector
1 Replies

8. Solaris

not getting the output properly

i am entering the command, not get the total out put see the output what i am getting. SQL> select dbms_metadata.get_ddl ('TABLESPACE','SYSTEM') FROM DUAL; DBMS_METADATA.GET_DDL('TABLESPACE','SYSTEM') -------------------------------------------------------------------------------- ... (0 Replies)
Discussion started by: pmrajesh21
0 Replies

9. Programming

y is this not working properly?

#include <stdio.h> #include <sys/types.h> #include <string.h> #include <sys/stat.h> #include <unistd.h> struct stat s; main() { char c; if (fork()==0) { system("clear"); do { printf("myAI\\>§ "); scanf("%s",c); if(stat(c,&s)>-1) {... (3 Replies)
Discussion started by: C|[anti-trust]
3 Replies

10. Filesystems, Disks and Memory

Not properly shutdown

Last night my sister was on the computer and she shut it down by just pressing the power button:mad:.I heard it was never good to shutdown a unix system from the power button(I always do the shutdown -h now), how do I know if the filesystem has been damaged or something like that?:confused: (5 Replies)
Discussion started by: DISTURBED
5 Replies
Login or Register to Ask a Question