Reformatting sysinternals accesschk


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Reformatting sysinternals accesschk
# 1  
Old 04-25-2012
Reformatting sysinternals accesschk

Hi all,

I'll just start by saying this forum is really great and contains some much information, keep up the good work!

Back to the action: I'm trying to reformat the output of a MS tool (sysinternals) called 'accesschk'. It can be used to generate an overview of directory structures and their permissions.

Tool output example:

Code:
c:\Users\Default
  RW NT AUTHORITY\SYSTEM
  RW BUILTIN\Administrators
  R  BUILTIN\Users
  R  Everyone
c:\Users\Test User
  R  Everyone
  RW NT AUTHORITY\SYSTEM
  RW BUILTIN\Administrators

I want to reformat it to a delimited file where each lines contains the folder, followed by the user followed by the permission. Let me reformat the example.

Desired ouput:

Code:
c:\Users\Default;NT AUTHORITY\SYSTEM;RW
c:\Users\Default;BUILTIN\Administrators;RW
c:\Users\Default;BUILTIN\Users;R
c:\Users\Default;Everyone;R
c:\Users\Test User;Everyone;R
c:\Users\Test User;NT AUTHORITY\SYSTEM;RW
c:\Users\Test User;BUILTIN\Administrators;RW

I tried this:

Code:
awk 'BEGIN{OFS=";"} !/^  / {f=$0} /^  / { print f, $0}' test.txt

This is the logic I used:

If a line does not start with a double space, it contains the folder name, so we store it in a variable f and don't print the line. If the line do starts with a double space, it contains a permission, so print the last folder name we have, a semicolon and the current line.

But it seems it prints the folder name and then overwrites the same line with the current. So this is the output:

Code:
;  RW NT AUTHORITY\SYSTEM
;  RW BUILTIN\Administrators
;  R  BUILTIN\Users
;  R  Everyonelt
;  R  EveryoneUser
;  RW NT AUTHORITY\SYSTEM
;  RW BUILTIN\Administrators

If anyone can point me in the right direction, it would make me a happy man! Smilie

Thanks in advance.
Kerbje
# 2  
Old 04-25-2012
The 'overwriting line' behavior is probably caused by carriage returns, which return the cursor to the beginning of the line without moving down one line. Text files generated by Windows are full of them.

Code:
tr -d '\r' < wingarbage > readabletext

This User Gave Thanks to Corona688 For This Post:
# 3  
Old 04-25-2012
Can also make it a part of your awk program:

Code:
awk 'BEGIN{OFS=";"} {sub(/\r$/,"")} !/^  / {f=$0} /^  / {print f, $0}' test.txt

edit:
or use it in RS if you know it is there for certain. gawk/mawk allow regex, RS="\r?\n"
Code:
awk 'BEGIN{RS="\r\n";OFS=";"}!/^ /{dir=$0;next} {print dir,substr($0,6),$1}' test.txt


Last edited by neutronscott; 04-25-2012 at 07:26 PM..
This User Gave Thanks to neutronscott For This Post:
# 4  
Old 04-25-2012
Hmmm ... I should have thought about that myself ...

Thank you for helping me out guys!

This is what I finally did:
Code:
awk 'BEGIN{OFS=";"} {sub(/\r$/,"")} !/^  / {f=$0} /^  / {FS=" "; print f, substr($0, index($0,$2)),$1}' test.txt

Which gives me the desired output.

Thank you very much!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help reformatting column

Hello UNIX experts, I'm stumped finding a method to reformat a column. Input file is a two column tab-delimited file. Essentially, for every term that appears in column 2, I would like to summarize whether that term appears for every entry in column 1. In other words, make a header for each term... (2 Replies)
Discussion started by: torchij
2 Replies

2. UNIX for Dummies Questions & Answers

Need help in reformatting the input

Hi i want to print line which is mentioned as below 615213:1;20150725;20250722;0|11;20150831;20150831;100|14;20150725;20160723;2 in below format. ' 615213: 1;20150725;20250722;0 615213: 11;20150831;20150831;100 615213: 14;20150725;20160723;2 please help me and suggest me how to... (9 Replies)
Discussion started by: scriptor
9 Replies

3. Shell Programming and Scripting

Date Reformatting function

Hi , I am trying to create a function with below requirements 1. It will take two parameters as Input. Date and Date format 2. Output will be in YYYYMMDD format. Example 1: Input: fn_date_reformatter('01-AUG-2014','DD-MON-YYYY') Output: 20140801 Example 2: Input:... (4 Replies)
Discussion started by: Anupam_Halder
4 Replies

4. Shell Programming and Scripting

Reformatting Column into rows

I have a file that I need to reformat so that every time I match a certain string in the first column it prints to the string as the heading and under the sting it prints the remaining entries on the line that matched the string. For example, I need to reformat this xxx : yyy zzz 11 : 111 222... (4 Replies)
Discussion started by: kieranfoley
4 Replies

5. UNIX for Dummies Questions & Answers

Date reformatting

I have been reformatting dates from a data file to make them mysql compliant. 31-10-2011 Loc1 1-11-2011 Loc2 The first can be captured by this: sed -i '' -e "s#\(..\)-\(..\)-\(....\)#\3-\2-\1#" data.txt and leads to: 2011-10-31 Loc1 The second line is captured as follows: sed -i... (2 Replies)
Discussion started by: figaro
2 Replies

6. UNIX for Dummies Questions & Answers

Date reformatting

I have a file with temperature measurements: Loc1,20090102,71.55 Loc1,20090103,71.65 Loc1,20090104,71.55 Loc1,20090105,71.54 Loc1,20090106,71.54 However, to load this into a database I would like to reformat the dates (column 2) from the yyyymmdd format to the yyyy-mm-dd format. I have... (2 Replies)
Discussion started by: figaro
2 Replies

7. UNIX for Dummies Questions & Answers

Date reformatting

I currently have the following file containing sample values for a number of dates: Loc1 04 Jan 2007 0.95 0.9532 Loc1 05 Jan 2007 0.95 0.9513 Loc1 06 Jan 2007 0.95 0.9535 This continues for all months of the year and spans across several years. I am trying to reformat the dates so that... (2 Replies)
Discussion started by: figaro
2 Replies

8. Shell Programming and Scripting

Help reformatting output

I have a command that gives me the output below: JAVA_HOME = C:/jdk1.5.0_11 Broker Performance Report for server 'app1' RMI_URL = rmis:// Parameter Kintana ItgDS DashboardDS ---------------------------- ------- ----- ----------- Connections count 41 ... (4 Replies)
Discussion started by: bwiebe
4 Replies

9. UNIX for Dummies Questions & Answers

Reformatting file

Hi, How can I reformat a file (text file) using unix command. This file was FTP'd from Mainframe and contains some garbage character at the end of each line. Each line contains special characters '<soh>' at the end which should have been spaces when I view it in emacs or nedit. I couldnt do find... (2 Replies)
Discussion started by: mrjunsy
2 Replies

10. Filesystems, Disks and Memory

reformatting a floppy!

i am trying to reformat a floppy i am using solaris 9 when i run this: rmformat -F quick /vol/dev/aliases/floppy0 it tells me that it cannot perform the operation on a mounted device. how do i unmount the device and format the floppy? (1 Reply)
Discussion started by: rmuhammad
1 Replies
Login or Register to Ask a Question