Again integrate files - bash script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Again integrate files - bash script
# 1  
Old 01-21-2009
Again integrate files - bash script

I wrote script in bash which generates this report "users.csv":
Quote:
@admin;;
user1;yes;
user2;yes;
user3;yes;
@develop;;
user4;no;
user5;yes;
user6;no;
user7;no;
@progs;;
user8;no;
user9;no;
user10;no;
...
I wrote script in bash which generates this report "groups.csv"
Quote:
@admin;path1;12;
user9;path10;1;
@admin;path2;12;
@develop;path3;12;
@develop;path4;1;
@progs;path5;1;
user10;path9;1;
@progs;path6;1;
@progs;path7;1;
@progs;path8;1;
...
I want to integate two reports: "users.csv" and "groups.csv".
I want like so that "result.csv":
Quote:
@admin;path1;12;;;
@admin;path2;12;;;
user1;yes;@admin;path1;12;
user1;yes;@admin;path2;12;
user2;yes;@admin;path1;12;
user2;yes;@admin;path2;12;
user3;yes;@admin;path1;12;
user3;yes;@admin;path2;12;
@develop;path3;12;
@develop;path4;1;
user4;no;@develop;path3;12;
user4;no;@develop;path4;1;
user5;yes;@develop;path3;12;
user5;yes;@develop;path4;1;
user6;no;@develop;path3;12;
user6;no;@develop;path4;1;
user7;no;@develop;path3;12;
user7;no;@develop;path4;1;
@progs;path5;1;
@progs;path6;1;
@progs;path7;1;
@progs;path8;1;
user8;no;@progs;path5;1;
user8;no;@progs;path6;1;
user8;no;@progs;path7;1;
user8;no;@progs;path8;1;
user9;no;@progs;path5;1;
user9;no;@progs;path6;1;
user9;no;@progs;path7;1;
user9;no;@progs;path8;1;
user9;no;@progs;path10;1;
user10;no;@progs;path5;1;
user10;no;@progs;path6;1;
user10;no;@progs;path7;1;
user10;no;@progs;path8;1;
user10;no;@progs;path9;1;
...
# 2  
Old 01-22-2009
Why do you call them CSV (comma separated values) when they are separated by semi-colons? :-)

This messy awk script should do the trick, however it doesn't come out in exactly that order; you could do some sorting if you wish:

Code:
awk '
  function printgroup(group) {
    # for each user in this group
    for (u in user) {
      split(u,a,SUBSEP)
      if (a[1]==group) {
        # print the user and all paths in this group
        for (i=1; i<=pathcount; i++) {
          print user[u],useryesno[u],paths[i]
          split(user[u],a,FS)
          # if there is a specific path for this user, print it too
          if (a[1] in specificpaths) {
            split(specificpaths[a[1]],b,FS)
            print user[u],useryesno[u],group,b[2],b[3],""
            delete specificpaths[a[1]]
          }
        }
      }
    }
    pathcount=0
  }
  BEGIN { FS=OFS=";" }
  # found a group name, remember it
  FNR==NR && /^@/ { group=$1; next }
  # found a user, add it and its rights to the group
  FNR==NR {
    user[group,++groupcount[group]]=$1
    useryesno[group,groupcount[group]]=$2
    next
  }
  # found a group in the second file
  /^@/ {
    # if it is the next group, print out the previous group
    if (FNR > 1 && $1 != prevgroup) { printgroup(prevgroup) }
    # build an array of paths in this group
    paths[++pathcount]=$0
    print
    prevgroup=$1
    next
  }
  # remember specific path entries for a user
  { specificpaths[$1]=$0 }
  END { printgroup(prevgroup) }
' file1 file2

# 3  
Old 01-22-2009
Thank you very much Smilie

PS. OO accept in CSV (comma separated values) "," and MSOffice accept in CSV (comma separated values) ";". I use MSOffice Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to integrate all the systemctl commands into a shell script to verify any daemon/agent service?

Hi, Can we integrate all the systemctl command into a shell script to verify any service with all the options of systemctl if service integrate with the operating system service management tools to deliver their functionality. sudo systemctl start <service_name> sudo systemctl stop... (1 Reply)
Discussion started by: Mannu2525
1 Replies

2. Web Development

Help to integrate Shell script with PHP

I have a shell script which takes user name and server name from the user and check the authentication type on that server like LDAP or VAS or local. It also provides various other info also such as owner of the ID and etc. I need this script to work on the browser where user can directly input... (2 Replies)
Discussion started by: Bhuwan Nazkani
2 Replies

3. Shell Programming and Scripting

Bash script for check files

I created this script for check whether specific files exist or not in the given location. but when I run this its always showing Failed - Flag_lms_device_info_20160628.txt do not exist Failed - Flag_lms_weekly_usage_info_20160628.txt do not exist but both files are existing. appreciate help... (2 Replies)
Discussion started by: lfreez
2 Replies

4. Shell Programming and Scripting

Renumbering files bash script

I am new to the world of Linux scripting, and would like to make the following 2 scripts: I have 67 files named Alk-0001.txt to Alk-0067.txt I would like them to be numbered Alk-002.txt to Alk-0134.txt eg Alk-0001.txt > Alk-0002.txt Alk-0002.txt > Alk-0004.txt Alk-0003.txt > Alk-0006.txt ... (3 Replies)
Discussion started by: tollyboy_uk
3 Replies

5. Shell Programming and Scripting

Bash script deleting my files, and editing files in subdirectories question

#!/bin/bash # name=$1 type=$2 number=1 for file in ./** do if then filenumber=00$number elif then filenumber=0$number fi tempname="$name""$filenumber"."$type" if (4 Replies)
Discussion started by: TheGreatGizmo
4 Replies

6. UNIX for Dummies Questions & Answers

Bash script to sort files

I've got a disorganized list of items and quantities for each. I've been using a combination of grep and sort to find out how much to buy of each item. I'm tired of having to constantly using these commands so I've been trying to write a shell script to make it easier, but I can't figure out how... (3 Replies)
Discussion started by: PTcharger
3 Replies

7. Shell Programming and Scripting

bash script to copy files

hey everyone, new here i have arch setup and i am using smbnetfs to mount some windows shares in /mnt/smbnet what i want to do is copy files from my home dir to a dir in /mnt/smbnet but i also need it to remove files if i have deleted them from my home dir seems that cp would be the... (8 Replies)
Discussion started by: dodgefan67
8 Replies

8. Shell Programming and Scripting

Bash script - integrate two files

I wrote script in bash which generates this report "users.csv": I wrote script in bash which generates this report "groups.csv" I want to integate two reports: "users.csv" and "groups.csv". I want like so that "result.csv": Thx (5 Replies)
Discussion started by: patrykxes
5 Replies

9. Shell Programming and Scripting

Renaming files in a bash script

I'm doing a short batch script to compile po files producing output binary mo files. The compilation command is: msgfmt -o file.mo file.po so in order to compile I am appending .mo to the varible in a loop. It goes something like this: for i in `find . -name "*.po"` do echo... (2 Replies)
Discussion started by: Breen
2 Replies
Login or Register to Ask a Question