Delete # of Lines after counting


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users Delete # of Lines after counting
# 1  
Old 10-26-2010
Delete # of Lines after counting

I'm trying to write a script to clean up log file automatically when it reaches 1000 lines. I can't get this to work..can some help me please Smilie
Server: SunOS 5.8 Generic_117350-53 sun4u sparc SUNW,Netra-T12

Code:
#!/bin/ksh

#file reference
file=`echo "$HOME/support/moe/b.tc"`

#linecount
linecount=`wc -l $file | awk '{print $1}'`
echo "Line count before : $linecount"

#find and delete lines greater than 1000
if [$linecount -gt 1000]; then
sed -i '1,100d' $file
else
echo " line count is file"
fi

echo $linecount
echo "Line count in the file is:  `wc -l $file | awk '{print $1}'`"

Smilie

Last edited by moe458; 10-26-2010 at 12:07 PM..
# 2  
Old 10-26-2010
Somthing like this ? (remove the 100 first line of the log if it gets greater or equal to 1000 lines)

Code:
if [[ $( wc -l $file ) -ge 1000 ]]
then
    tail +101 $file >log.tmp
    cat log.tmp >$file
    rm log.tmp
fi


Last edited by ctsgnb; 10-26-2010 at 02:00 PM.. Reason: code fix + indentation to make Scruti happy :)
# 3  
Old 10-26-2010
hmmm.. still having some issues maybe u can see what could it be :


Code:
#!/bin/ksh

#file reference
file="b.tc"

#linecount
linecount=`wc -l $file | awk '{print $1}'`
echo "Line count before : $linecount"

#find and delete lines greater than 1000
if [[ $( wc -l $file ) -ge 1000 ]] && tail +101 $file >log.tmp
cat log.tmp >$file
rm log.tmp
else
echo " line count is file"
fi

echo $linecount
echo "Line count in the file is:  `wc -l b.tc | awk '{print $1}'`"



"h.sh" 19 lines, 388 characters 
romtst2@towgd20 UAT  /spectra/romtst2/support/moe > h.sh
Line count before : 13626
h.sh[11]: syntax error at line 15 : `else' unexpected

# 4  
Old 10-26-2010
I'm not sure of your syntax here. We have an if without a then but using && instead and I'm not sure what else will get processed. You may just career on into the cat log.tmp>$file hence why the failure at the else statement.

Consider this:-
Code:
if [ `wc -l $file` ]
then
   tail +101 $file > log.tmp
   mv log.tmp $file
else
   echo "Line count of $file is `wc -l $file`"
fi

I hope that this helps.
Robin

Last edited by vgersh99; 10-26-2010 at 12:34 PM.. Reason: code tags, please!
This User Gave Thanks to rbatte1 For This Post:
# 5  
Old 10-26-2010
Thanks that worked just fine Smilie
# 6  
Old 10-26-2010
You are welcome.


Robin
Liverpool
UK
# 7  
Old 10-26-2010
1. You are true, i fixed my code with the if then instead of &&.

2. My turn now... Smilie ... WARNING about your code :

a) if [ `wc -l $file` ] : this doesn't check whether is exceed 1000 lines

b) by using mv log.tmp $file, you will loose the inode of $file !!!!

this mean that if the logfile is currently being processed you may encounter unexpected behaviour or errors.
That is the reason why it is advisable to use
Code:
cat log.tmp >$file 
rm log.tmp

instead of mv log.tmp $file

Quote:
Originally Posted by rbatte1
I'm not sure of your syntax here. We have an if without a then but using && instead and I'm not sure what else will get processed. You may just career on into the cat log.tmp>$file hence why the failure at the else statement.

Consider this:-
Code:
if [ `wc -l $file` ]
then
   tail +101 $file > log.tmp
   mv log.tmp $file
else
   echo "Line count of $file is `wc -l $file`"
fi

I hope that this helps.
Robin

Last edited by ctsgnb; 10-26-2010 at 02:00 PM..
These 2 Users Gave Thanks to ctsgnb For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Counting # of lines

Counting number of lines: sp I am trying to figure out a script to count the number of text files in cywig and have it give me a number (as the answer) any help would be appreciated. I am new here, so be gentle :D (3 Replies)
Discussion started by: unicksjp
3 Replies

2. Shell Programming and Scripting

sed counting lines

Hi, I'm using the command: sed -n '$=' $1 on a sh script on AIX. This script is used to count the number of lines of files. If the file has no lines at all the command doesn't return nothing. I need the command to return 0 when the file has no lines at all. How can I achieve this? Best... (5 Replies)
Discussion started by: jppedroso
5 Replies

3. Shell Programming and Scripting

Counting lines for each application

Hi All, I have a output that suppose to be like this (see below please) App : Line counts === ================== AAA: 100 BBB: 201 CCC: 137 DDD: 32 EEE: 55 for i in `ps -ef | grep App`; do print $i; done This only shows App : === (12 Replies)
Discussion started by: Beginer0705
12 Replies

4. Shell Programming and Scripting

Counting similar lines

Hi, I have a little problem with counting lines. I know similar topics from this forum, but they don't resolve my problem. I have file with lines like this: 2009-05-25 16:55:32,143 some text some regular expressions ect. 2009-05-25 16:55:32,144 some text. 2009-05-28 18:15:12,148 some... (4 Replies)
Discussion started by: marcinnnn
4 Replies

5. Shell Programming and Scripting

Counting lines between two patterns

Hi Guys, I have a file as follows: wwe khfgv jfo wwe jhgfd wwe wwe hoaha hao lkahe wwe (13 Replies)
Discussion started by: npatwardhan
13 Replies

6. Shell Programming and Scripting

counting the number of lines - again

Hi all, I use bash shell and I have a problem with wc. I would like to determine the number of lines in a file so I do wc -l filename but I don't want to get the filename again I just would like to have the number of lines and use it in a variable. Can anybody help? Thank you, (7 Replies)
Discussion started by: f_o_555
7 Replies

7. Shell Programming and Scripting

displaying/ counting lines

I have a file called xx with the env redirected into it 5 times: env >> xx env >> xx env >> xx env >> xx env >> xx I have to read an input file (here: xx) and look for occurrences of the current user who is executing this script. Once finding an occurrence of the username I have to take that... (2 Replies)
Discussion started by: aga
2 Replies

8. UNIX for Dummies Questions & Answers

displaying/ counting lines

I have a file called xx with the env redirected into it 5 times: env >> xx env >> xx env >> xx env >> xx env >> xx I have to read an input file (here: xx) and look for occurrences of the current user who is executing this script. Once finding an occurrence of the username I have to take that... (4 Replies)
Discussion started by: aga
4 Replies

9. Linux

counting the number of lines

Hello, I have afile which begins with a few urls on multiple lines and then there is listing of some information on separate lines. The listing begins with the word Name on a given line followed by teh actual list. I want to count the number of lines in this file after the line having... (6 Replies)
Discussion started by: nayeemmz
6 Replies

10. UNIX for Dummies Questions & Answers

Counting lines and files

Hi experts, First of all thanks for all your help. How can i count the lines within a text file and send this number to another text file? And by the way how can i count the number of files inside a tape ("/dev/rtp") that as one pattern (Ex. "/CTA/") and send this number to a text file? I... (6 Replies)
Discussion started by: jorge.ferreira
6 Replies
Login or Register to Ask a Question