reversing order of lines in a file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting reversing order of lines in a file
# 1  
Old 03-02-2007
Error reversing order of lines in a file

how can i reverse the line order in text files?
(but total number of the lines is not constant )

for example i have a file like this:

line1
line2
line3
.
.
lineN


i wantto make it like this:

lineN
.
.
.
line3
line2
line1
# 2  
Old 03-02-2007
U can try something like this>

#!/usr/bin/awk -f

#< AWK - Reverse order of words in each line of a file

{ cnt = NF;
while ( cnt > 0 ) {
printf( "%s ", $cnt );
--cnt;
}
printf( "\n" );
}
# 3  
Old 03-02-2007
Quote:
Originally Posted by gfhgfnhhn
how can i reverse the line order in text files?
(but total number of the lines is not constant )

for example i have a file like this:

line1
line2
line3
.
.
lineN


i wantto make it like this:

lineN
.
.
.
line3
line2
line1
There is a GNU utility called tac, part of coreutils, that does what you want.

If you don't have it, and cannot install it:

Code:
awk '{x[NR] = $0}
 END { while ( NR > 0 ) print x[NR--] }' [FILENAME ...]

# 4  
Old 03-02-2007
Code:
sed '1!G;h;$!d'    file
sed -n '1!G;h;$p' file


from sed - one liners
# 5  
Old 03-02-2007
Try this...

Code:
cat -n <filename>| sort -r | cut -f2-20 > reversedfile

Experts please comment if anything wrong with this.... Smilie
# 6  
Old 03-02-2007
Reversal using tail & heads

Though complex , You can have script presented below does the job!!

#!/bin/ksh
Tot=$(sed -n $= FILE )
i=0;
while [[ $i -le $Tot ]] ; do
tail -n"$i" FILE | head -1
((i=i+1))
done

You can extend the script for multiple files. Experts please comment on the approach
# 7  
Old 03-02-2007
Quote:
Originally Posted by ennstate
Though complex , You can have script presented below does the job!!

#!/bin/ksh
Tot=$(sed -n $= FILE )
i=0;
while [[ $i -le $Tot ]] ; do
tail -n"$i" FILE | head -1
((i=i+1))
done

You can extend the script for multiple files. Experts please comment on the approach
This is horrendously slow, as it calls two external commands for every line in the file. Here are timings for a 181-line file (xx.sh is your script):

Code:
 $ time tac .bashrc > /dev/null

real    0m0.021s
user    0m0.002s
sys     0m0.005s
$ time awk '{x[NR]=$0}END{while (NR) print x[NR--]}' .bashrc > /dev/null

real    0m0.010s
user    0m0.003s
sys     0m0.006s
$ time xx.sh .bashrc > /dev/null

real    0m2.060s
user    0m0.483s
sys     0m1.420s

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help with order lines from a file based on a pattern

Hi I need to order these lines from a txt file my file looks like this IMSI ........................ 1234567890 APN ......................... INTERNET.COM APN ......................... MMS.COM APN ......................... WAP.COM APN ......................... BA.COM IMSI... (4 Replies)
Discussion started by: alone77
4 Replies

2. Shell Programming and Scripting

Consolidate several lines of a CSV file with firewall rules, in order to parse them easier?

Consolidate several lines of a CSV file with firewall rules Hi guys. I have a CSV file, which I created using an HTML export from a Check Point firewall policy. Each rule is represented as several lines, in some cases. That occurs when a rule has several address sources, destinations or... (4 Replies)
Discussion started by: starriol
4 Replies

3. Shell Programming and Scripting

File w/ many line pairs--how do I order based on 1st lines only?

I have a file in which the data is stored in pairs of lines. The first line (beginining with ">") is a header, the second line is a sequence. I would like to sort the file by species name. Desired output for the example file: I can use sort -t'_' -k2 to alphabetize headers in the... (1 Reply)
Discussion started by: pathunkathunk
1 Replies

4. Shell Programming and Scripting

Reversing text order of each line of a file in UNIX

My input is: hello how are you my chemistry book is lost what is up etc... And I want the output to be: you are how hello lost is book chemistry my up is what .... I found an earlier response to a similar question but it was not accurate as it required a certain string length for each line (2 Replies)
Discussion started by: Heidi Heweidy
2 Replies

5. Shell Programming and Scripting

Print selected lines from file in order

I need to extract selected lines from a log file, I can use grep to pull one line matching 'x' or matching 'y', how can I run through the log printing both matching lines in order top to bottom. i.e line 1 xyz - not needed line 2 User01 - needed line 3 123 - not needed line 4 Info - needed... (2 Replies)
Discussion started by: rosslm
2 Replies

6. UNIX for Dummies Questions & Answers

Reversing line and word order using awk

Hello, I am new to awk and I was wandering if I could reverse line and word order from a text file using awk. I figured out how to do them both separately, but can't quite figure out how to mix them. Example: Input file: dog cat mouse 1 2 3 I am new to awk Output of the awk program:... (3 Replies)
Discussion started by: blink_w
3 Replies

7. Shell Programming and Scripting

Order file by lines

My script(3 arguments $1 = folder,$2 extension,$3 string) should do the following things: -Enter in the folder of $1(if exists). -Put ls *.$2 > temp.txt ( I use a temp file to store the result of ls command and if $2 = txt in this file I'll have all the .txt files of the folder) -Now I want to... (2 Replies)
Discussion started by: Max89
2 Replies

8. Shell Programming and Scripting

reversing multiple lines

Hi I want to reverse multiple lines from my file eg of File1 3 4 5 6 7 8 9 a b c d e f g h I am using this code to reverse lines but it can only work with one row awk -F'\t' '{while (NF){printf("%s%s", $(NF--),!NF?"":FS)}}' File1 > File2 I want the file to look like this 9 8 7 6 5 4... (2 Replies)
Discussion started by: phil_heath
2 Replies

9. Shell Programming and Scripting

Reversing file order using SED

Im trying to develop a shell script that will change the content order of the file. For example I have a file that says a b c d I want to change this to be d c b a Im trying to use sed to this by reading the file and then inserting each line at the top #!/usr/bin/ksh ... (3 Replies)
Discussion started by: MBGPS
3 Replies

10. Shell Programming and Scripting

output string in reversing order

If I have string { I_love_shell_scripts} anyone knows how to have output {stpircs_llehs_evol_I} by using shell and perl ?I know in perl, there is reverse() funcation, but can it be done by not using reverse()? (3 Replies)
Discussion started by: ccp
3 Replies
Login or Register to Ask a Question