rone: (Default)
[personal profile] rone

I want to run a command that will give me the contents of a file, except for the last two lines.  I know that tail -2 filename will give me the last two lines of a file, and head -2 filename will give me the first two lines of a file.  Now, tail +2 filename will give me contents of a file, starting with line 2.  It's not a symmetrical option, but i can at least work with that.  However, the head command lacks this elegant mode; otherwise, i would infer that head +3 filename would give me what i want.  Is there a simple command that can do what i want?  I figure i can implement this in some fugly perl script, but that is not the damn point.

assuming you're using bash.

Date: 2008-12-05 08:08 am (UTC)
From: [identity profile] rwx.livejournal.com
head -$((`wc -l foo | cut -c-8` -2)) foo

Date: 2008-12-05 08:24 am (UTC)
From: [identity profile] mundivagant.livejournal.com
head --lines=-N

(edit) in this case, head --lines=-2

(edit 2) output of head --version:
head (GNU coreutils) 6.10
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by David MacKenzie and Jim Meyering.
Edited Date: 2008-12-05 08:26 am (UTC)

Date: 2008-12-05 08:25 am (UTC)
From: [identity profile] dagbrown.livejournal.com

Heh, I just thought of an evil one.

tac foo | tail +2 | tac

after a few rounds of optimization

Date: 2008-12-05 10:14 am (UTC)
From: [identity profile] oh6.livejournal.com
sed -n -e H -e '/\n/h' -e g -e '/\n.*\n/!b' -e P -e D

Date: 2008-12-05 11:35 am (UTC)
vatine: Generated with some CL code and a hand-designed blackletter font (Default)
From: [personal profile] vatine
There is always awk...

Date: 2008-12-05 02:37 pm (UTC)
ext_86356: (2632)
From: [identity profile] qwrrty.livejournal.com
You want fugly? I dare you to do it in bc.

Date: 2008-12-05 03:23 pm (UTC)
From: [identity profile] arian1.livejournal.com
I say you give the +2 filename to the ranger and keep the +3 filename for yourself. Sell off the -2 one and head back into the dungeon.

Date: 2008-12-05 05:37 pm (UTC)
From: [identity profile] sweh.livejournal.com
sed -e '$d' | sed -e '$d'

nasty but it works and is simple to understand.

sed -e 'N;$!P;$!D;$d'
actually does want you want (but has a bug if the file is only 1 line long).

(I googled that... took 5 seconds "sed all but last 2 lines". Don't think I could have created it on my own since I'm not too good with sed pattern buffer mangling)

Date: 2008-12-10 01:33 pm (UTC)
From: [identity profile] kerri9494.livejournal.com
The nurdiness of this thread has me all aflutter. I just had to say.

I was gonna say, "Count the lines, and then get count -2." I had no idea the poetry.

Profile

rone: (Default)
entombed in the shrine of zeroes and ones

December 2022

S M T W T F S
    123
45678910
11121314151617
18192021222324
252627282930 31

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 25th, 2025 09:00 am
Powered by Dreamwidth Studios