Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

display multiple lines from file

0 views
Skip to first unread message

Nezhate

unread,
May 8, 2008, 6:17:45 AM5/8/08
to
Hi all,
I'm looking for command that print any number of lines from a given
file.
For example file1.txt contains 100 lines
using the head command I can printout the first n lines from
file1.txt.
using the tail command I can printout the n last lines from file1.txt
How to do for printing out a block of lines, let say from the 50 th
line to 68 th line ?
I used this but it fails

file_name="file1.txt"

if [ -f $file_name ] ;then
tail +$1 $3 | head -n$2
fi

Another question:
How to detect the total number of lines from a given file?
knowing this it will help me to use a for loop to echo all lines that
I want to print.
cheers

Dave B

unread,
May 8, 2008, 6:25:42 AM5/8/08
to
On Thursday 8 May 2008 12:17, Nezhate wrote:

> Hi all,
> I'm looking for command that print any number of lines from a given
> file.
> For example file1.txt contains 100 lines
> using the head command I can printout the first n lines from
> file1.txt.
> using the tail command I can printout the n last lines from file1.txt
> How to do for printing out a block of lines, let say from the 50 th
> line to 68 th line ?

sed -n '50,68p' yourfile

> Another question:
> How to detect the total number of lines from a given file?
> knowing this it will help me to use a for loop to echo all lines that
> I want to print.

What you want can be done using other (more efficient) means, however to
know the number of lines in a file there are many ways, for instance:

sed -n '$=' yourfile
awk 'END {print NR}' yourfile
wc -l < yourfile

--
D.

Dave B

unread,
May 8, 2008, 6:45:41 AM5/8/08
to
On Thursday 8 May 2008 12:25, Dave B wrote:

>> How to do for printing out a block of lines, let say from the 50 th
>> line to 68 th line ?
>
> sed -n '50,68p' yourfile

If the file is very large, you probably don't want sed to read the rest of
the file, so do

sed -n '50,68p;68q' yourfile

--
D.

Janis

unread,
May 8, 2008, 7:27:07 AM5/8/08
to
On 8 Mai, 12:17, Nezhate <mazouz.nezh...@gmail.com> wrote:
> Hi all,
> I'm looking for command that print any number of lines from a given
> file.
> For example file1.txt contains 100 lines
> using the head command I can printout the first n lines from
> file1.txt.
> using the tail command I can printout the n last lines from file1.txt
> How to do for printing out a block of lines, let say from the 50 th
> line to 68 th line ?

awk 'NR>=50&&NR<=68' yourfile

awk 'NR==50,NR==68' yourfile


> I used this but it fails

In what way does it fail?

>
> file_name="file1.txt"
>
> if [ -f  $file_name ] ;then
>   tail +$1 $3 | head -n$2

Are you sure you intended to use $3 instead of $filename?

> fi
>
> Another question:
> How to detect the total number of lines from a given file?

wc -l <yourfile

Or if you want to combine that information with the other
command above and use just a single (awk) program

awk 'NR==50,NR==68; END{print NR}' yourfile


Janis

mo

unread,
May 8, 2008, 10:13:10 PM5/8/08
to
On Thu, 08 May 2008 07:17:45 -0300, Nezhate <mazouz....@gmail.com>
wrote:

#Q1
file_name="file1.txt"

if [ -f $file_name ] ;then
head -n$2 $file_name|tail -n$(($2-$1+1))
fi

#Q2
wc -l $file_name

0 new messages