How to read n number of lines from a file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to read n number of lines from a file
# 15  
Old 10-13-2009
Try this:
Code:
var=10
filename=file
xargs -n $var < $filename | awk '{ max=0; for(i=1;i<=NF;i++) if ($i > max) max=$i; print max; }'

Use the same logic in loop to handle multiple files.
# 16  
Old 10-13-2009
Hi,
Try this ,

Code:
#!/bin/sh

read -p "Enter your filename: " filename
read -p "Enter count: " cnt

line_cnt=`cat $filename | wc -l`

loops=`echo $line_cnt / $cnt | bc`
loop_add=`echo $line_cnt % $cnt | bc`
[ $loop_add -gt 0 ] && loops=`expr $loops + 1` || loops=$loops

for (( i=1 ; i <= $loops ; i++ ))
do
        high_num=`tail -$line_cnt $filename | head -$cnt | sort -nr | head -1`
        line_cnt=`expr $line_cnt - $cnt`
        echo "count $i HIGHEST NO :- $high_num"
done

echo "total number of count = $cnt and total no of loops - $loops"

# 17  
Old 10-14-2009
Hi jp2542a


ur code works perfectly,but the thing it takes the count as from 0 but i want is it should take count as from 1

Code:
Enter file name
file3
Enter the number
4
count0
biggest no is 6
count1
biggest no is 100
count2
biggest no is 1000
count3
biggest no is 16
total count is 4

this is the output given by the program

but what i need is

Code:
Enter file name
file3
Enter the number
4

count1
biggest no is 6
count2
biggest no is 100
count3
biggest no is 1000
count4
biggest no is 16

total count is 4

Help me plzzzzzzzzzzzImageImage

And plzzzzzzzzzzzzzzzzz explain me program also

Its urgent PLzzzzzzzzzzz rpy me as soon as possible


Tanx!!!!!!

Last edited by Franklin52; 02-16-2010 at 06:59 AM.. Reason: Please use code tags!
# 18  
Old 10-15-2009
Replace the awk line with this in the shell script:

Code:
awk -v count=$n 'BEGIN{ i=0; } {k = $1; for (j=1; j<count; j++) {getline; if ( $1 > k ) k = $1; } print "count" ++i; print "biggest no is " k} END {print "total count is " i}' $file


As for what it means... This says set the awk internal variable count to the input

Code:
-v count=$n

This tells awk to initialize i to 0

Code:
BEGIN{ i=0; }


This is the beginning of a clause that says set variable k to the value of the first field of the input line. it will be done for every line.

Code:
{k = $1;

This bit says check each of the following count-1 lines to see if the value is greater than the current k (high) value. if it is, the it becomes the new k.

Code:
for (j=1; j<count; j++) {getline; if ( $1 > k ) k = $1; }

This prints out the biggest value (k) and ends the loop

Code:
print "biggest no is " k}

This is executed when we run out of input and prints the counter

Code:
END {print "total count is " i}

This is the name of the input file

Code:
$file

# 19  
Old 10-15-2009
tanx

Thanx tanx a lot, the reason im keep on asking help is bcoz of im very much new for shell scripting



Tanx!!!!!!SmilieSmilieSmilie
# 20  
Old 10-22-2009
Help!!

hi

i have shell scripting for finding the maximum number
now i want to find both maximum and minimum number

i attach the program and output and also file content


myfile(contents)

Code:
260
10
10
250
100
1
1
1
1
2
1
3
4
5
8
2.7
44
4
3
4
4
5
5
7
100
10
03
25
200
160
300
6000



program

Code:
#!/bin/bash
echo "Enter file name"
read file
echo "Enter the number"
read n
awk -v count=$n 'BEGIN{ i=0; } {k = $1; for (j=1; j<count; j++) {getline; if ( $1 > k ) k = $1 } print "count" i; i++; print "biggest no is " k;} END {print "total count is " i}' $file > output

output

Code:
Enter file name
myfile
Enter the number
4

vi output
count0
biggest no is 260
count1
biggest no is 100
count2
biggest no is 3
count3
biggest no is 8
count4
biggest no is 44
count5
biggest no is 7
count6
biggest no is 100
count7
biggest no is 6000
total count is 8


In the above output what i need is


output

Code:
Enter file name
myfile
Enter the number
4

vi output
count0
smallest no is 10
biggest no is 260
count1
smallest no is 1
biggest no is 100
count2
smallest no is 1
biggest no is 3
count3
smallest no is 2.7
biggest no is 8
count4
smallest no is 3
biggest no is 44
count5
smallest no is 4
biggest no is 7
count6
smallest no is 03
biggest no is 100
count7
smallest no is 160
biggest no is 6000
total count is 8

i belive my question would have been clear

plzzzzzzzzz anyone help meSmilieSmilie

kindly requesting!!

Thanks!!

---------- Post updated at 11:41 AM ---------- Previous update was at 01:07 AM ----------

hi

the program i tried is

Code:
#!/bin/bash
echo "Enter file name"
read file
echo "Enter the number"
read n
awk -v count=$n 'BEGIN{ i=0; } {k = $1; m = $1; for (j=1; j<count; j++) {getline; if ( $1 > k ) k = $1; if ( $1 < m ) m = $1;} print "count" ++i; print "smallest is " m; print "biggest no is " k} END{print "total count is " i}' $file


file content is (data)

Code:
6
3
2.3
5
0.3
2.6
100
21
2000
5
3
3
8
9
10
2000
12


my output is

Code:
Enter file name
data
Enter the number
4

count1
smallest is 2.3
biggest no is 6
count2
smallest is 0.3
biggest no is 100
count3
smallest is 3
biggest no is 2000
count4
smallest is 8
biggest no is 2000
count5
smallest is 
biggest no is 12
total count is 5

while there is left only one number in last i want the output like this given below
Code:
.
.
.
.
.
.
count5
only one number is left 12
total count is 5

then while taking 5set of no's my output is like this

Code:
Enter file name
data
Enter the number
5
count1
smallest is 0.3
biggest no is 6
count2
smallest is 2.6
biggest no is 2000
count3
smallest is 3
biggest no is 10
count4
smallest is 
biggest no is 2000
total count is 4

but it should display like this as given below

Code:
.
.
.
.
.
count4
smallest is 12
biggest no is 2000
total count is 4


plzzzzzzzzzz anyone help meSmilieSmilieSmilie

Tanx in advance

Last edited by Franklin52; 02-16-2010 at 07:01 AM.. Reason: Please use code tags!
# 21  
Old 10-26-2009
hi SmilieSmilieSmilie

im very much new for shell scripting

plzzzzzzzz anyone help meSmilieSmilieSmilie

i have a file content
Code:
1 2 3 4 5 6 
3 5 6 
7 9 3 2 4 4 6 6 
.......
.......
.....

for this i need the output like
Code:
1 2 3 4 5 6 average=3.5
3 5 6 average=4.6666
7 9 3 2 4 4 6 6 average=5.125


i think i should use "awk -f"

but im stucked hw to use for this


plzzzzzzzz help me


Thanks in advanceSmilieSmilieSmilie

Last edited by Franklin52; 02-16-2010 at 07:01 AM.. Reason: Please use code tags!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to read a file starting at certain line number?

I am new to ksh scripts. I would like to be able to read a file line by line from a certain line number. I have a specific line number saved in a variable, say $lineNumber. How can I start reading the file from the line number saved in $lineNumber? Thanks! (4 Replies)
Discussion started by: dcowboys13
4 Replies

2. Shell Programming and Scripting

How to read a number from a file?

hello guys, I'm struggled to get a number from a very long text file. NAtoms= 33 NActive= 30 NUniq= 23 SFac= 1.00D+00 NAtFMM= 60 NAOKFM=F Big=F Integral buffers will be 131072 words long. Raffenetti 2 integral format. The number 33 is what I wanted, always follows NAtoms=... (5 Replies)
Discussion started by: liuzhencc
5 Replies

3. Shell Programming and Scripting

Read line with particular number of lines

Hi all, I have a file sample.txt abc asd adf daf adw add adv wdf I want to control the number of lines to read Like if i give input as ./script_name 2 5 required output asd adf daf (2 Replies)
Discussion started by: krux_rap
2 Replies

4. UNIX for Dummies Questions & Answers

When reading a csv file, counter to read 20 lines and wait for minute then read next 20 till end

Hello All, i am a newbie and need some help when reading a csv file in a bourne shell script. I want to read 10 lines, then wait for a minute and then do a reading of another 10 lines and so on in the same way. I want to do this till the end of file. Any inputs are appreciated ... (3 Replies)
Discussion started by: victor.s
3 Replies

5. UNIX for Dummies Questions & Answers

How to read contents of a file from a given line number upto line number again specified by user

Hello Everyone. I am trying to display contains of a file from a specific line to a specific line(let say, from line number 3 to line number 5). For this I got the shell script as shown below: if ; then if ; then tail +$1 $3 | head -n $2 else ... (5 Replies)
Discussion started by: grc
5 Replies

6. UNIX for Dummies Questions & Answers

Read directory files and count number of lines

Hello, I'm trying to create a BASH file that can read all the files in my working directory and tell me how many words and lines are in that file. I wrote the following code: FILES="*" for f in "$FILES" do echo -e `wc -l -w $f` done My issue is that my file is outputting in one... (4 Replies)
Discussion started by: jl487
4 Replies

7. Shell Programming and Scripting

Number lines of file and assign variable to each number

I have a file with a list of config files numbered on the lefthand side 1-300. I need to have bash read each lines number and assign it to a variable so it can be chosen by the user called by the script later. Ex. 1 some data 2 something else 3 more stuff which number do you... (1 Reply)
Discussion started by: glev2005
1 Replies

8. Shell Programming and Scripting

Read the specified line number from file

Hi Guys, I am new to unix. Actually i want help in writing an single command where i can actually read specific line number in file where the line number will be passed to command as parameter. ex. 1 a 2 b 3 c 4 d And to my command i pass as 2. so i should get output as 2 b ... (15 Replies)
Discussion started by: kam786sim
15 Replies

9. Shell Programming and Scripting

Read a number from file and place it back

Hi All, I want to read one number from the file. Only one number will be there in the file. then i have to increment the number in my script and put it back in the same file. Is it possible? Can anybody help me? Thanks, Vinay (6 Replies)
Discussion started by: vinayakatj56
6 Replies

10. Shell Programming and Scripting

To read and separate number and words in file and store to two new file using shell

hi, I am a begginer in unix and i want to know how to open a file and read it and separate the numbers & words and storing it in separate files, Using shell scripting. Please help me out for this. Regards S.Kamakshi (2 Replies)
Discussion started by: kamakshi s
2 Replies
Login or Register to Ask a Question