Awk Question

William Weaver williamdweaver-Re5JQEeQqe8AvxtiuMwx3w at public.gmane.org
Mon Oct 29 21:05:03 UTC 2012


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>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://gtalug.org/pipermail/legacy/attachments/20121029/09cffc06/attachment.html>


More information about the Legacy mailing list