Solved

Script to parse the log file

Posted on 2014-09-19
4
305 Views
Last Modified: 2014-11-24
I have a text file with below contents. Need a shell or perl script that will take path to the scripts_folder as parameter

text file contents
==========================================================================

Repository: https://someserver:9443/
Workspace: (1000) "test_scripts_ws"
  Component: (1001) "some_Automated_Scripts"
    Change sets:
      (1002) ---$ john "test memory" 17-Sep-2014 02:24 PM
        Changes:
          --a-- \Libs\path\to\some\file22.txt
          --m-- \Libs\file\some\folder\locg2.lcke
          --d-- \Libs\file\in\some\folder\lock.lck
          ---c- \Libs\file\path\to\test\folder\source.mtr
          ---c- \Libs\Action1\Resource.mtr
         
      (1003) ---$ john "Test exist:"  17-Sep-2014 12
:33 PM
        Changes:
          ---c- \Libs\path\to\some\folder\cript.mts
      (1004) ---$ john "Memory Fix #2" 17-Sep-2014 12:47 PM
        Changes:
          ---c- \Libs\path\tp\some\folder\test.txt

======================================================================================

The current folder structure is
                   
                     -->test
                       -->scripts_folder
                          -->Libs
                          -->Libs2
                          -->Libs3
                          -->test1  

  test.pl C:\test\scripts_folder\

1. Delete all the files in the scripts_folder directory except the one's in the above log file starting with  --c-  --a--   --m--

2. Ignore lines starting with --d--
 
3. Do not error out if the file matching above criteria is already deleted or doesnt exist in the scripts_folder  
    directory.
0
Comment
Question by:gaurav sharma
  • 2
  • 2
4 Comments
 

Author Comment

by:gaurav sharma
ID: 40333355
For now I have :

cat required.txt | grep -e --a- -e --m-- -e ---c-
        --a-- \Libs\test1\test1\test1.txt
       --m-- \Libs\test1\test1\test11.txt
       ---c- \Libs\Libs\test2\test2\test22.txt
       ---c- \Libs\Libs\test2\test2\test2.txt
       ---c- \Libs\Libs\test3\test33.txt
0
 
LVL 84

Expert Comment

by:ozo
ID: 40333997
Is required.txt in the scripts_folder directory?
If not, how should the script find it?
If so, should it also be deleted?
0
 

Author Comment

by:gaurav sharma
ID: 40336516
@Ozo: The required.txt is in the scripts_folder directory.
            This file should not be deleted.
0
 
LVL 84

Accepted Solution

by:
ozo earned 500 total points
ID: 40348224
#!/usr/bin/perl
use strict;
use warnings;
require 5.014;
use File::Find;
my($path,%r);
die "Usage: $0 pathtothescripts_folder" unless $path=shift;
chdir $path or die "$path $!";
++$r{"/required.txt"};
open R,"<required.txt" or die "$path/required.txt $!";
while( <R> ){
    ++$r{$1=~s#[/\\]#/#gr} if /--(?:a-|m-|-c)-\s+(\S+)/;
}
close R;
find({wanted => sub{
    !-f or $r{s#(^\.)?[\\/]#/#gr} or unlink $_ or warn "$_ $!";
    },no_chdir=>1},".");
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Linux KVM - How to create a new VM with a dynamic / thin disk? 16 82
Unix Script: Loop over all days of a month 17 88
Problem to open Excel file 15 95
AWS CLI issues with Tags 3 63
In my business, I use the LTS (Long Term Support) versions of Linux. My workstations do real work, and so I rarely have the patience to deal with silly problems caused by an upgraded kernel that had experimental software on it to begin with from a r…
Active Directory replication delay is the cause to many problems.  Here is a super easy script to force Active Directory replication to all sites with by using an elevated PowerShell command prompt, and a tool to verify your changes.
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…

919 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now