The UNIX and Linux Forums  

Go Back   The UNIX and Linux Forums > Top Forums > Shell Programming and Scripting
Google UNIX.COM


Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts here. Shell Script Page.

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
delete first 100 lines from a file salaathi SUN Solaris 3 11-15-2007 12:01 AM
delete first 100 lines rather than zero out of file thepurple SUN Solaris 7 11-14-2007 09:35 AM
delete the lines from file sameersam Shell Programming and Scripting 2 04-03-2006 10:32 PM
Delete lines in a file umal Shell Programming and Scripting 6 02-08-2006 09:08 AM
delete all lines in file strok UNIX for Dummies Questions & Answers 6 03-11-2002 06:27 PM

Reply
 
Submit Tools LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 04-18-2008
Registered User
 

Join Date: Mar 2008
Posts: 19
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Reddit! Stumble this Post!Spurl this Post!
delete n last lines of a file

Hello!!!

how can I delete the last n lines of a file???

Thanks
Reply With Quote
Forum Sponsor
  #2 (permalink)  
Old 04-18-2008
Registered User
 

Join Date: Sep 2006
Location: Mysore, India
Posts: 151
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Reddit! Stumble this Post!Spurl this Post!
Refer this
Reply With Quote
  #3 (permalink)  
Old 04-18-2008
Registered User
 

Join Date: Sep 2006
Posts: 1,403
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Reddit! Stumble this Post!Spurl this Post!
if you have a better head
Code:
head -n -10 file
Reply With Quote
  #4 (permalink)  
Old 04-18-2008
Registered User
 

Join Date: Jun 2006
Posts: 148
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Reddit! Stumble this Post!Spurl this Post!
Assuming you want to remove the last 22 lines:

Code:
tac filename | tail -n +23 | tac
What this does:

1. Reverse the file.
2. Take all but the first 22 lines.
3. Reverse the file again (back to the original order).

Note that the number tells it at which line to start, so 2 will cut off the first line, 50 will cut off 49 lines, etc.

ShawnMilo
Reply With Quote
  #5 (permalink)  
Old 04-18-2008
radoulov's Avatar
addict
 

Join Date: Jan 2007
Location: Milan, Italy/Varna, Bulgaria
Posts: 1,333
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Reddit! Stumble this Post!Spurl this Post!
Or:

Code:
perl -0777pe's/(?:.*\n){10}\z//' file
Or in-place with ed:

Code:
printf '$-9,$d\nw'|ed - file
Reply With Quote
  #6 (permalink)  
Old 05-16-2008
Registered User
 

Join Date: May 2008
Posts: 8
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Reddit! Stumble this Post!Spurl this Post!
I tried using the command 'tac' . i get an error command not 'found'.. how do delete the last three lines from the file..please help
Reply With Quote
  #7 (permalink)  
Old 05-17-2008
era era is offline
Herder of Useless Cats
 

Join Date: Mar 2008
Location: /there/is/only/bin/sh
Posts: 2,253
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Reddit! Stumble this Post!Spurl this Post!
If you know the number of lines, subtract three and print up through that number.

Radoulov's solutions are superior, as usual, although they will read the entire file into memory at once, whereas the following basically operates the file a line at a time.

Code:
lines=$(wc -l <inputfile)
wanted=`expr $lines - 3`
head -n $wanted inputfile >outputfile
Reply With Quote
  #8 (permalink)  
Old 05-17-2008
Registered User
 

Join Date: Jun 2006
Posts: 148
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Reddit! Stumble this Post!Spurl this Post!
This is not memory-intensive, and will work.

Code:
cat filename | perl -ne 'push(@a, $_); print shift(@a, ) if  $#a >=3 ;'
Reply With Quote
Google UNIX.COM
Reply

Thread Tools
Display Modes


The 50 most popular UNIX and Linux searches.
Google Search Cloud for The UNIX and Linux Forums
"inappropriate ioctl for device" 421 service not available, remote server has closed connection ^m autosys awk trim bash eval bash exec bash for loop boot: cannot open kernel/sparcv9/unix close_wait command copy/move folder in unix curses.h cut command in unix dead.letter find grep find null character in a unix file grep multiple lines grep or grep recursive grep unique inaddr_any inappropriate ioctl for device logrotate.conf lynx javascript mailx attachment mget mtime ping port remove first character from string in k shell replace space by comma , perl script scp recursive segmentation fault(coredump) sftp batch sftp script snoop unix stale nfs file handle syn_sent tar exclude unix unix .profile unix com unix forum unix forums unix interview questions unix mtime unix simulator unix.com vi tab size vi+substitute+end+of+line+character while loop within while loop shell script


All times are GMT -7. The time now is 12:09 PM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited.
The UNIX and Linux Forums Content Copyright ©1993-2008 The CEP Blog All Rights Reserved -Ad Management by RedTyger Visit The Global Fact Book

Content Relevant URLs by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101