Sunday, February 12, 2017

Parse ACLs and comparison made between 2 files obtained through setacl.exe command

copy wealth_source.csv source.csv /y
copy wealth_target.csv target.csv /y

sed -ie "/^\\\\/{n;d}" source.csv
sed -ie "s/   /;/g" source.csv
awk -F; "{if (NF!=0 && $1==\"\") {$1=prev} prev=$1}1" OFS=; source.csv >source2.csv
sed -i "/^\s*$/d" source2.csv
sed -ie "s/=/;/g" source2.csv
sed -ie "/.*;DACL/d"  source2.csv

awk -F";" "BEGIN {OFS=\";\"} {gsub(/\\/,\";\",$2); print}" source2.csv >source3.csv
awk -F";" "BEGIN {OFS=\";\"} {print $0, $1\"\\\\\" $3}" source3.csv >source4.csv

sed -ie "/^\\\\/{n;d}" target.csv
sed -ie "s/   /;/g" target.csv
awk -F; "{if (NF!=0 && $1==\"\") {$1=prev} prev=$1}1" OFS=; target.csv >target2.csv
sed -i "/^\s*$/d" target2.csv
sed -ie "s/=/;/g" target2.csv
sed -ie "/.*;DACL/d"  target2.csv
del sed *.

awk -F";" "BEGIN {OFS=\";\"} {gsub(/\\/,\";\",$2); print}" target2.csv >target3.csv
awk -F";" "BEGIN {OFS=\";\"} {print $0, $1\"\\\\\" $3}" target3.csv >target4.csv

awk -F";" "BEGIN {OFS=\";\"} {print $08, $0}" target4.csv >target5.csv
awk -F";" "BEGIN {OFS=\";\"} {print $08, $0}" source4.csv >source5.csv
awk -F";" "BEGIN {OFS=\";\"} {gsub(/\\\\TargetServer\\software/,\"\",$1); print}" target5.csv >target6.csv
awk -F";" "BEGIN {OFS=\";\"} {gsub(/\\\\OriginalServer\\Vol1/,\"\",$1); print}" source5.csv >source6.csv

sed -i "/^;/d" target6.csv
sed -i "/^;/d" source6.csv

awk -F";" "NR==FNR{a[$1]=$1\";\"$2\";\"$3\";\"$4\";\"$5\";\"$6\";\"$7\";\"$8;next}{if (a[$1])print a[$1]\";\"$0;else print $1 \" Not Found\"\";\"\";\"\";\"\";\"\";\"\";\"\";\"\";\" $0;}" target6.csv source6.csv > BUSCA-EN-TARGET-LO-QUE-HAY-EN-SOURCE.CSV

awk -F";" "NR==FNR{a[$1]=$1\";\"$2\";\"$3\";\"$4\";\"$5\";\"$6\";\"$7\";\"$8;next}{if (a[$1])print a[$1]\";\"$0;else print $1 \" Not Found\"\";\"\";\"\";\"\";\"\";\"\";\"\";\"\";\" $0;}" source6.csv target6.csv > Found-on-target.csv
sed -i "1 i\Value searched;File found on Target (Targetserver);Target Domain found;Target Group found;Target SID found;Target ACL found;Target ACL found;Target ACL found;Source value;Source file;Source Domain;Source group;Source SID;Source ACL;Source ACL;Source ACL" BUSCA-EN-TARGET-LO-QUE-HAY-EN-SOURCE.CSV

findstr /c:" Not Found" Found-on-target.csv >only-missings-on-source.csv

del sed *.

Script on Windows with awk/sed to parse two files making a comparison between them.
Scenario: robocopied source to target
ReACL is required. Tool used: setacl.exe with mapping.csv file using OLDSID,NEWSID
This script removes what I don't care - Searches based on column or field 1: file/folder+GroupName, if not found it states not found.


Post a Comment

AWK vlookup on Windows in my case

I needed to process two files/sheets to find the matches or mark un-match as Not found or anything similar.
These are extremely long files which causes excel to take forever, or even crash everytime I ran a vlookup between these two sheets.

awk vlookup solution would be something like this
Assuming you have 2 files separated by semicolon as the demiliter.

awk -F";" "NR==FNR{a[$1]=$1\";\"$2\";\"$3\";\"$4\";\"$5\";\"$6\";\"$7\";\"$8;next}{if (a[$1])print a[$1]\";\"$0;else print $1 \" Not Found\"\";\"\";\"\";\"\";\"\";\"\";\"\";\"\";\" $0;}" target6.csv source6.csv > BUSCA-EN-TARGET-LO-QUE-HAY-EN-SOURCE.CSV

If first column of both files are equal, print columns 1 to 8 from the target6.csv file, plus the entire line from source6.csv  if it is not found it will print the value we are looking plus "Not found" and then the entire line from source6.csv


Post a Comment

Sunday, February 7, 2016

SRT to VobSub

I bought a TV: Panasonic ET60 very nice but it does not handle subtitles very well, or I mean it is very limited (very small font, and not possible to change colors)

The solution would be to either hard copy the subtitles or use vobsub subtitles (idx+sub / vobsub is supported on this TV, I guess many DVD players and other Smart TV would be in the same conditions).

So I found two good solutions txt2vobsub or subtitlecreator.
I prefer subtitlecreator because the fonts look slightly better, but maybe that just me.
And finally use mkvmerge (incredible tool) to pack all together.

So I created two scripts, one for each case, you would need to download/extract and add that directory to your path (System environment) or you could copy all the files everytime.
Then copy for each case the .cmd to the directory where you have the movie and subtitle.
The script will look for .mp4 and .srt (same filename). You could edit or rename based on your preference.

(if you want to modify the font and size: for txt2vobsub just edit the batch fule and replace the name, I think it is set to Arial 24, if you want do this for SubCreator go to the data subfolder, edit the profile.xml, edit colors by changing the palette colors in hex format, this will also let you position the subtitle as required, with these settings it will work for 720p movies in general).

Download link:!GdsFAIJZ!PYvbKNfWL_ZpVEfTJogn2w


Post a Comment

Wednesday, May 6, 2015

Add the filename to each start of line on a file with SED

So you have a text file where you want to add the filename on each start of line for some reason so it can be easily managed as a csv or on Excel.

So do a dir /b > on the directory or create a list of files that require the filename as the begining of each line on those files:

In my example I have a bunch of file names inside asd.txt

for /f "tokens=*" %%i in (asd.txt) do sed "s/^/%%i;/" %%i


for /f "tokens=*" %%i in (asd.txt) do sed -i "s/^/%%i;/" %%i

That will add the filename and a semicolon

Such as:

And so on.


Post a Comment

Thursday, April 23, 2015

Findstr regexp to find subfolders of shares 3rd level

Findstr regexp quick note:
As you may know regexp or regular expressions are there to ease our work
Using awk,sed is very common. But it can also be used to quickly search some patterns in windows native command findstr.
If you are not familiar with regexp it is like telling your computer you want to search some patterns instead of a literal search.
Literal search would be: dir file.txt : file.txt is the filename
Regexp search would be: dir *.txt : the asterisk is part of the regexp search, it is a very silly simple example but you understand the idea.

So for example you have a list of directories or shares.
And what you need is to find only the subfolders, at the 3rd level.
You can you use findstr in this way:
type shares-with-quotes.txt | findstr /r /c:"\\\\.*\\.*\\.*"

From input:

type shares-with-quotes.txt | findstr /r /c:"\\\\.*\\.*\\.*"
Only this will be filtered:

And if you want the opposite do somethink like:
type shares-with-quotes.txt | findstr /r /v /c:"\\\\.*\\.*\\.*"

Note: "\" has to be doubled because of the regexp notation so a literal "\" needs to be stated as "\\", you will have to escape some special characters like this or dot, asteriks, etc


Post a Comment