Awk Question

William Park opengeometry-FFYn/CNdgSA at public.gmane.org
Mon Oct 29 22:40:59 UTC 2012


Here is non-Awk/Python/Perl/Ruby solution:

    mkdir /tmp/Bob; touch /tmp/Bob/Add
    mkdir /tmp/Ben; touch /tmp/Ben/{Add,Delete}
    mkdir /tmp/Tommy; touch /tmp/Tommy/Add
    mkdir /tmp/Sarah; touch /tmp/Sarah/{Delete,Edit}

To get all users with Delete rights,

    cd /tmp
	ls */Delete | cut -f1 -d/

To get all other rights for users with the Delete rights,

    cd /tmp
	ls */Delete | cut -f1 -d/ | xargs ls

Adjust to your taste...
-- 
William

On Mon, Oct 29, 2012 at 05:05:03PM -0400, William Weaver wrote:
> That just gives me the users who have delete. I need the other rights they
> have that aren't delete.
> 
> Thanks,
> 
> Will
> 
> On Mon, Oct 29, 2012 at 4:24 PM, Kevin Cozens <kevin-4dS5u2o1hCn3fQ9qLvQP4Q at public.gmane.org> wrote:
> 
> > On 12-10-29 01:44 PM, William Weaver wrote:
> >
> >> So I'm still working on my awk skills. I'm trying to write a script that
> >> allows me to pase a csv file of user rights and get all users that have a
> >> specific right. Then using that list of users find all other rights those
> >> users have.
> >>
> >
> > As a rule I use awk where I need to process individual lines of a file to
> > alter the output somehow or extract info from each line. For what you are
> > suggesting I would probably lean towards using Perl. Depends whether you
> > are trying to learn awk or have restrictions preventing use of Perl.
> >
> >
> >  UserName,Right
> >> Bob,Add
> >> Ben,Add
> >> Ben,Delete
> >> Tommy,Add
> >> Sarah,Delete
> >> Sarah,Edit
> >>
> >> My result set if I search for users with Delete should look like
> >>
> >> Ben,Delete
> >> Sarah,Edit
> >>
> >
> > I think you have an error in the example. Are you trying to format the
> > output in to "name,list of perms" (ie. Ben,Add,Delete)?
> >
> > You may be better off parsing the input and building associative arrays.
> > One array for each user with their list of permissions. You can then print
> > the output of the arrays with the perms for each user that can be piped to
> > a file for later searching. Alternatively, you can build arrays based on
> > the perms and get a list of names who have a given permission.
> >
> > You also need to watch out for CSV fields enclosed in quotes where there
> > might be a comma between the quotes. It will mess up splitting the CSV
> > input in to fields.
> >
> >
> >  /Delete/ { Users[$1]=$2 }
> >> /Delete/ {print $1, " - ", Users[$1]}
> >>
> >
> > /Delete/ { Users[$1]=$2; print $1, " - ", Users[$1]; }
> > or
> > /Delete/ {
> >   Users[$1]=$2;
> >   print $1, " - ", Users[$1];
> > }
> >
> > You can also do the print statement as:
> >   printf "%s - %s",$1, Users[$1];
> >
> >
> > --
> > Cheers!
> >
> > Kevin.
> >
> > http://www.ve3syb.ca/           |"Nerds make the shiny things that
> > distract
> > Owner of Elecraft K2 #2172      | the mouth-breathers, and that's why we're
> >                                 | powerful!"
> > #include <disclaimer/favourite> |             --Chris Hardwick
> >
> > --
> > The Toronto Linux Users Group.      Meetings: http://gtalug.org/
> > TLUG requests: Linux topics, No HTML, wrap text below 80 columns
> > How to UNSUBSCRIBE: http://gtalug.org/wiki/**Mailing_lists<http://gtalug.org/wiki/Mailing_lists>
> >
--
The Toronto Linux Users Group.      Meetings: http://gtalug.org/
TLUG requests: Linux topics, No HTML, wrap text below 80 columns
How to UNSUBSCRIBE: http://gtalug.org/wiki/Mailing_lists





More information about the Legacy mailing list