Reduce the number of lines in script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Reduce the number of lines in script
# 1  
Old 09-08-2013
Reduce the number of lines in script

Hello All,

I have created a script which will show the errors from a log file in between a particular section.

Code:
v1=$(sed -n "/Main Report/,/Main Report End/p" input | grep -i 'Unable to find'
v2=$(sed -n "/Main Report/,/Main Report End/p" input | grep -i 'Unable to add'

if [ -z "$v1" ]
then
echo "All report deployed properly"
else
echo "List of report failed to deploy in Main Report due to Null pointer exception"
echo "$v1"
fi 

if [ -z "v2"]
then
echo "All Report Deployed Properly"
else
echo "List of report failed to deploy in Main Report due to xml issue"
echo "$v"
fi 

v3=$(sed -n "/Second Report/,/Second Report End/p" input | grep -i 'Unable to find'
v4=$(sed -n "/Second Report/,/Second Report End/p" input | grep -i 'Unable to add'

if [ -z "$v3" ]
then
echo "All report deployed properly"
else
echo "List of report failed to deploy in Second Report due to Null pointer exception"
echo "$v3"
fi 

if [ -z "v4"]
then
echo "All Report Deployed Properly"
else
echo "List of report failed to deploy in Second Report due to xml issue"
echo "$v4"
fi

Is there a way I can use some loop to reduce these code lines. The error are same but in different part of logs.
# 2  
Old 09-08-2013
can you clear the scenario. from your code i understood that you are searching many files and trying to grep some string and printing report on that basis.
Please provide the file pattern and pattern to grep
# 3  
Old 09-08-2013
Thanks for the reply.

Actually iam checking these error from a single log file. It consist around 900-1000 Lines. I need to check error staring from one section of report to the starting of other.for example take the below log.

Code:
aaaaaaaaa
bbbbbbbbbbb
Main Report
Unable to add file 1
Unable to add file 3
Unable to find file 2
Unable to find file 5
Main Report End
ttttttttttttt
uuuuuuuuuuu
Second Report
Unable to add file 56
Unable to add file 89
Unable to find file 484
Unable to find file 899
Second Report End

So in this way i have to find from the same log that how many files failed due to Unable to add and Unable to find reason in between Main Report start and End Section and Second Report start and End section.

---------- Post updated at 10:31 AM ---------- Previous update was at 09:49 AM ----------

Also iam getting values in variable in single line like the below

Code:
echo $v1
Unable to add file 56 Unable to add file 89

But iam looking for the below one
Code:
Unable to add file 56
Unable to add file 89

# 4  
Old 09-08-2013
Code:
echo $v1

changes newlines to spaces.
In your script you did it correctly
Code:
echo "$v1"

In your script you have several times "all reports"; shouldn't that be the "specific report"? Or do you want to set an error variable, and at the end say "all reports okay" if the variable is not set?
A loop can shorten your script, but in this case I would go for a function...
# 5  
Old 09-08-2013
Hello,

Not need to use grep, sed can search pattern and awk will better solution.
But, if we rest in shell:
Code:
$ cat file.sh
#!/bin/bash

while IFS=':' read m1 m2 p1 r1
do
        xx=$(sed -n "/$m1/,/$m2/{/$p1/p}" file.log)
        if [[ -z "$xx" ]]
        then
                echo "All report deployed properly"
        else
                echo "$r1"
                echo "$xx"
        fi
done <file.pat

Code:
$ cat file.pat
Main Report:Main Report End:Unable to find:List of report failed to deploy in Main Report due to Null pointer exception
Main Report:Main Report End:Unable to add:List of report failed to deploy in Main Report due to xml issue
Second Report:Second Report End:Unable to add:List of report failed to deploy in Second Report due to xml issue
Second Report:Second Report End:Unable to find:List of report failed to deploy in Second Report due to Null pointer exception

Code:
$ cat file.log
aaaaaaaaa
bbbbbbbbbbb
Main Report
Unable to add file 1
Unable to add file 3
Unable to find file 2
Unable to find file 5
Main Report End
ttttttttttttt
uuuuuuuuuuu
Second Report
Unable to add file 56
Unable to add file 89
Unable to find file 484
Unable to find file 899
Second Report End

Code:
$ ./file.sh
List of report failed to deploy in Main Report due to Null pointer exception
Unable to find file 2
Unable to find file 5
List of report failed to deploy in Main Report due to xml issue
Unable to add file 1
Unable to add file 3
List of report failed to deploy in Second Report due to xml issue
Unable to add file 56
Unable to add file 89
List of report failed to deploy in Second Report due to Null pointer exception
Unable to find file 484
Unable to find file 899

Regards.
# 6  
Old 09-09-2013
This is with a function.
It stores the errors in variables, so needs more memory but reads the input file less often.
Code:
function print_error() {

v=$(sed -n "/$1/,/$1 End/p" input | grep -i 'Unable to ')

v1=$(echo "$v" | grep -i ' to find')
v2=$(echo "$v" | grep -i ' to add')

if [ -n "$v1" ]
then
  echo "List of report failed to deploy in $1 due to Null pointer exception"
  echo "$v1"
  err=1
fi

if [ -n "$v2" ]
then
  echo "List of report failed to deploy in $1 due to xml issue"
  echo "$v2"
  err=1
fi

if [ -z "$err" ]
then
  echo "All Report Deployed Properly"
fi

}

print_error "Main Report"
print_error "Second Report"

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Print number of lines for files in directory, also print number of unique lines

I have a directory of files, I can show the number of lines in each file and order them from lowest to highest with: wc -l *|sort 15263 Image.txt 16401 reference.txt 40459 richtexteditor.txt How can I also print the number of unique lines in each file? 15263 1401 Image.txt 16401... (15 Replies)
Discussion started by: spacegoose
15 Replies

2. Shell Programming and Scripting

Reduce the number of lines by using Array

I have the following code to count the number of how many times the name occurred in one file. The code is working fine and the output is exactly what I want. The problem is the real code has more than 50 names in function listname which cause function name to have more than 50 case ,and function... (14 Replies)
Discussion started by: samsan
14 Replies

3. Shell Programming and Scripting

[Solved] Script to concatenate 2 files with the same number of lines

Hi everyone, I have two files, namely: file1: file1Col1Row1;file1Col2Row1;file1Col3Row1 file1Col1Row2;file1Col2Row2;file1Col3Row2 file1Col1Row3;file1Col2Row3;file1Col3Row3file2: file2Col1Row1;file2Col2Row1;file2Col3Row1 file2Col1Row2;file2Col2Row2;file2Col3Row2... (0 Replies)
Discussion started by: gacanepa
0 Replies

4. UNIX for Dummies Questions & Answers

Writing a script to print the number of lines in multiple files

Hi I have 1000 files labelled data1.txt through data1000.txt. I want to write a script that prints out the number of lines in each txt file and outputs it in the following format: Column 1: number of data file (1 through 1000) Column 2: number of lines in the text file Thanks! (2 Replies)
Discussion started by: evelibertine
2 Replies

5. UNIX and Linux Applications

Looking to reduce the number a cpus available for SGE

Hey all Im looking to reduce the number of cpus available on a certain node in our cluster available for jobs using SGE. i.e. we have one node that has 24 cpus available for jobs on SGE, i would like to reduce that to 16. Thanks (1 Reply)
Discussion started by: olifu02
1 Replies

6. Shell Programming and Scripting

To reduce the bash script length!!!

Hi friends, at last i finish my script to find the status of the URL , in this code i used all the status codes, because of this it take too much of length. with the help of wiki only i find all the status codes. Status codes in HTTP #!/bin/bash timevar=`date +%d-%m-%Y_%H.%M.%S` #--... (6 Replies)
Discussion started by: anishkumarv
6 Replies

7. Shell Programming and Scripting

perl script on how to count the total number of lines of all the files under a directory

how to count the total number of lines of all the files under a directory using perl script.. I mean if I have 10 files under a directory then I want to count the total number of lines of all the 10 files contain. Please help me in writing a perl script on this. (5 Replies)
Discussion started by: adityam
5 Replies

8. Shell Programming and Scripting

Script to split files based on number of lines

I am getting a few gzip files into a folder by doing ftp to another server. Once I get them I move them to another location .But before that I need to make sure each gzip is not more than 5000 lines and split it up . The files I get are anywhere from 500 lines to 10000 lines in them and is in gzip... (4 Replies)
Discussion started by: gubbu
4 Replies

9. UNIX for Dummies Questions & Answers

How to reduce multiple files into a specific number of files

Can anyone please let me know how do I reduce files into a specific number of files by cat'ing files? For example: 15 files must be reduced to 1 or 5 or 9 (possible values 1 to 14) (5 Replies)
Discussion started by: aryanbelank
5 Replies

10. Shell Programming and Scripting

need inputs on how i can change my script to reduce amount of time the script takes

HI , I have a list1 which consists of data that i have to search and a list2 which has the files that need to be searched .So basically i am using list1 on list2 to see if list1 data is present if found replace it .I have written the code using foreach loop for each list .This is taking the... (1 Reply)
Discussion started by: madhul2002
1 Replies
Login or Register to Ask a Question