The b variable, incrementing on every line, is identical with awk's NR variable.
So one can shorten it to
a is an array that stores each line.
So the file must fit into memory!
At the END, the middle array element is printed.
Another approach, slower but saving memory is
also using another awk variable FNR, but needs to read infile twice.
The difference between NR and FNR might become clear with the following test
And by looking at it, or by applying school mathematics one can optimize to
Last edited by MadeInGermany; 06-23-2014 at 02:25 PM..
Reason: optimized
This User Gave Thanks to MadeInGermany For This Post:
The b variable, incrementing on every line, is identical with awk's NR variable.
So one can shorten it to
a is an array that stores each line.
So the file must fit into memory!
At the END, the middle array element is printed.
Another approach, slower but saving memory is
also using another awk variable FNR, but needs to read infile twice.
The difference between NR and FNR might become clear with the following test
And by looking at it, or by applying school mathematics one can optimize to
Unfortunately, if infile contains an odd number of lines (3 for example), none of these will work.
In the 1st awk script int(3/2) is 1, not 2; so that script prints the 1st line instead of the 2nd (middle) line in the file.
And, in the 2nd awk script, the line to be printed from the file reading it the 2nd time would have NR == 5 and FNR == 2, but NR (5) != FNR*3 (6).
A corrected version of the 1st script should work (as long as the file fits in memory):
The simplest working code I came up with reading the file about 1.5 times is:
This User Gave Thanks to Don Cragun For This Post:
First month learning about the Linux terminal and it has been a challenge yet fun so far. We're learning by using a gameshell. I'm trying to display a certain line ( only allowed 1 command ) from a file only using the head or tail. I'm pretty about this answer:
head -23 history.txt | tail -1... (1 Reply)
example of problem:
when I echo "$e" >> /home/cogiz/file.txt
result prints to file as:AA
BB
CC
I need it to save to file as this:AA BB CC
I know it's probably something really simple but any help would be greatly appreciated.
Thank You.
Cogiz (7 Replies)
here is what i want to achieve.. i have a file with below contents
cat fileName
blah blah blah
.
.DROP this
REJECT that
.
--sport 7800 -j REJECT --reject-with icmp-port-unreachable
--dport 7800 -j REJECT --reject-with icmp-port-unreachable
.
.
.
more blah blah blah
--dport 3306... (14 Replies)
How would you do vim copy line and paste at the beginning, middle, and end of another line. I know yy copies the whole line and p pastes the whole line, but on its own separate line. Sometimes I would like to copy a line to the beginning, middle, or end of another line. I would think this would be... (3 Replies)
i had this scenario where i need to delete a file that is 6 months old which is no longer needed. basically the filename is in the format of PCARDDAILYmmddyyyy.txt where the mm is the month, dd is the day, and yyyy is the year.
e.g.
PCARDDAILY05262009.txt
PCARDDAILY05252009.txt
... (6 Replies)
Hi
I want to display "echo command value in loop" in single line. My requirement is to show the input file (test_1.txt) like the output file (test_2.txt) given below.
Input file :test_1.txt
a1|b1|4|5
a1|b1|42|9
a2|b2|32|25
a1|b1|2|5
a3|b3|4|8
a2|b2|14|6
Output file:test_2.txt... (2 Replies)
Hi All,
I had a file called Input.txt, i need to group up in a single line as 1=ttt and the no of lines may vary bewteen the 1=ttt
cat Input.txt
1=ttt,2=xxxxxx, 3=4545
44545, 4=66667
7777, 5=77723
1=ttt, 2=xxxxxx, 3=34436 66
3545, 4=66666, 5=ffffff, 6=uuuuuuu
1=ttt, 2=xxxxxx,... (4 Replies)
I've got a configuration file that is filled with xml text statements for example:
<...../>
<...../>
<...../>
<data id="java-options" value="-server -Djava.security.policy..../>
<...../>
<...../>
<...../>
I want to write a korn shell script that will go to this specific line and add a... (2 Replies)
Hello everyone. I have been reading a lot about the various different text editors at my disposal through Unix, but I just can't seem to close the deal for what I am trying to do. Is there a way to issue a single line command to edit a file where pattern=x, and do it non-destructively AND in-place?... (1 Reply)