Visit Our UNIX and Linux User Community


ordering a data file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting ordering a data file
# 1  
Old 03-26-2010
ordering a data file

With an input file like this:
Quote:
_1.012E+01_2.102E+04_3.222E+03_4.100E+02
-1.144E+02-2.489E-02_5.444E+01-3.122E-03
-3.566E+00_7.455E+04-4.326E+03_7.834E+00
How can I get an output like this?

Quote:
_1.102E+01
_2.102E+04
_3.222E+03
_4.100E+02
-1.144E+02
-2.489E-02
...
7.834E+00
(In the quoted examples, the "_" sign represents an empty space)

Note that there are some minus signs and no spaces, in the example above the first character of the first line is an empty space, so each number spans 10 characters.
With the command cut -c1-10 I can get the correct numbers but only the first column of the input file, and I don't know how to reorder the numbers.
Any suggestions?
# 2  
Old 03-26-2010
One way:
Code:
sed 's/\(.\{10\}\)\(.\{10\}\)\(.\{10\}\)\(.\{10\}\)/\1\n\2\n\3\n\4/' file

# 3  
Old 03-26-2010
It worked perfectly.
Thanks Franklin52!
# 4  
Old 03-27-2010
Hi Franklin,

It will be great if you explain your sed command execution.
# 5  
Old 03-27-2010
Quote:
Originally Posted by Jairaj
Hi Franklin,

It will be great if you explain your sed command execution.
Code:
sed 's/\(.\{10\}\)\(.\{10\}\)\(.\{10\}\)\(.\{10\}\)/\1\n\2\n\3\n\4/' file

The command has 4 patterns of ten characters:
Code:
\(.\{10\}\)

and prints a newline between each pattern:
Code:
\1\n\2\n\3\n\4

# 6  
Old 03-27-2010
If Franklin52's solution fails for anyone trying it, it's because the \n escape sequence in replacement text is an extension not supported by all implementations. If your implementation (like mine) does not support it, you need to use a backslash immediately prior to a newline to get the newline in there. Just mentioning it in case someone finds themselves scratching their head Smilie

Code:
$ sed 's/\(.\{10\}\)\(.\{10\}\)\(.\{10\}\)\(.\{10\}\)/\1\n\2\n\3\n\4/' data
_1.012E+01n_2.102E+04n_3.222E+03n_4.100E+02
-1.144E+02n-2.489E-02n_5.444E+01n-3.122E-03
-3.566E+00n_7.455E+04n-4.326E+03n_7.834E+00

$ sed -e 's/\(.\{10\}\)\(.\{10\}\)\(.\{10\}\)\(.\{10\}\)/\1\      
> \2\
> \3\
> \4/' data
_1.012E+01
_2.102E+04
_3.222E+03
_4.100E+02
-1.144E+02
-2.489E-02
_5.444E+01
-3.122E-03
-3.566E+00
_7.455E+04
-4.326E+03
_7.834E+00

A slightly different approach:
Code:
sed 's/\(.\{10\}\)/\1\
/g; s/\n$//' data

Have a nice weekend,
Alister
# 7  
Old 03-27-2010
Code:
awk '{for (i=1;i<=NF;i++) $i=((i-1)%10?X:"\n") $i} {printf $0}' FS="" OFS="" urfile


Previous Thread | Next Thread
Test Your Knowledge in Computers #206
Difficulty: Easy
Exterior Gateway Protocol (EGP) is a modern, widely used, routing protocol.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Bash - re-ordering list of parameters

Hello. I have a script that writes parameters in alphabetic order. But I have a parameter which have 3 lines. There is no continuation character ( '\' ). Each of the three lines finish with 'cr'. But line 2 and 3 of the concerning parameter start with a tab char (but should be one or more... (7 Replies)
Discussion started by: jcdole
7 Replies

2. Shell Programming and Scripting

Ordering batch number

Hi, Could some one please help to order the batch number in sequence. I will be getting bunch of files with batch number in folder1 which are not in sequence. I need to move all files from folder1 to folder2 with batch number in sequence. Header record looks like PROCESS1... (8 Replies)
Discussion started by: zooby
8 Replies

3. Shell Programming and Scripting

Ordering Folders having Date as Names

Hi All, I have directories under /development/arun/weekly/ 20120421 20120414 . . . . I need to arrange these directories in descending order. folder name with recent date will be on top and then others. (1 Reply)
Discussion started by: Arun Mishra
1 Replies

4. Shell Programming and Scripting

Random ordering

1 2 4 5 3 I would like to use a script so that i can randomly rearrange these numbers such as 3 5 2 4 1 Thanks! (3 Replies)
Discussion started by: johnkim0806
3 Replies

5. Shell Programming and Scripting

ordering

file1 1 SNP2 3 1 SNP3 3 1 SNP5 4 2 SNP1 4 2 SNP4 4 file2 SNP1 1 1 1 SNP5 5 5 5 SNP4 4 4 4 SNP2 2 2 2 SNP3 1 1 1 desired output (1 Reply)
Discussion started by: johnkim0806
1 Replies

6. Shell Programming and Scripting

Re ordering lines - Awk

Is it possible to re-order certain rows as columns (of large files). Few lines from the file for reference. input Splicing Factor: Tra2beta, Motif: aaguguu, Cutoff: 0.5000 Sequence Position Genomic Coordinate K-mer Score 97 chr1:67052604 uacuguu 0.571 147... (3 Replies)
Discussion started by: quincyjones
3 Replies

7. Shell Programming and Scripting

Re-ordering data

input Predictions for job: 1299399580 ********************************************** gg18_qqq10_100017878_100017978_- ============================================================================== zzz Factor: XXX, ttt: crsmsgw, Cutoff: 0.6429 seqe Position fff Coordinate K-mer Score ... (3 Replies)
Discussion started by: quincyjones
3 Replies

8. Homework & Coursework Questions

word ordering problem HELP please (linux)

Hi guys I need you ,please help me i have to do this for tomorow and i don't understand how to do Q1 : Order the words of RADIO.txt by frequency Q2 : Order the words of RADIO.txt in alphabétique order Q3 : Order the words of RADIO.txt par ordre "rhymique" (exemple, put togeder words which are... (1 Reply)
Discussion started by: Lili
1 Replies

9. Shell Programming and Scripting

File ordering by portion of filename

Hi, Lets say I have a few xml files: 1234567894.xml abc_1234567895.xml abc_000_1234567890.xml abc_0000000_1234567893.xml 684_abc_000_1234567899.xml The naming convention of the files is: xxxxx_timestamp.xml OR timestamp.xml where x can be anything and I would like to order them by... (4 Replies)
Discussion started by: Leion
4 Replies

10. Shell Programming and Scripting

proper ordering of o/p values

Hi, Below is my script which creates a file: #!/bin/sh if then echo "Enter bill period " echo "Syntax: sh cpd.sh G08" exit fi sqlplus uname/pwd@dbname <<EOF set WRAP off set FEEDBACK off set PAGESIZE 0 set VERIFY off (14 Replies)
Discussion started by: ss_ss
14 Replies

Featured Tech Videos