Solved

Script to parse the log file

Posted on 2014-09-19
4
316 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

The purpose of this article is to fix the unknown display problem in Linux Mint operating system. After installing the OS if you see Display monitor is not recognized then we can install "MESA" utilities to fix this problem or we can install additio…
Utilizing an array to gracefully append to a list of EmailAddresses
Six Sigma Control Plans
In a recent question (https://www.experts-exchange.com/questions/29004105/Run-AutoHotkey-script-directly-from-Notepad.html) here at Experts Exchange, a member asked how to run an AutoHotkey script (.AHK) directly from Notepad++ (aka NPP). This video…

705 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