Commands to reorganize a text file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Commands to reorganize a text file
# 1  
Old 03-20-2011
Commands to reorganize a text file

Hi!

I am trying to create a script to reorder the contents of a text file. Below is the text file initially, followed by how I would like it reordered:

File initially:
---
Initial lines with text and/or numbers
Initial lines with text and/or numbers
Initial lines with text and/or numbers
Initial lines with text and/or numbers
Initial lines with text and/or numbers

x1 y1 z1 num1
1 E1,1
2 E1,2
3 E1,3
4 E1,4
5 E1,5
6 E1,6
...
{note to forum: there is always one linespace in between}
x2 y2 z2 num2
1 E2,1
2 E2,2
3 E2,3
4 E2,4
5 E2,5
6 E2,6
...

(The above sections are repeated hundreds of times.)

File reordered:
---
x y z 1 2 ...
x1 y1 z1 E1,1 E1,2 ...
x2 y2 z2 E2,1 E2,2 ...
...

I hope this makes sense. Essentially I need to be able to generate an Excel plot of x, y and z versus the energies. Other notes:

1. x1, y1, z1, E1,1 etc. are all numbers (decimals and floating point).
2. The '1', '2', '3', ... numbers above are exactly what appears.

Any help that can be provided would be great! I have attached a copy of the real initial file.

Thanks!
gwr
# 2  
Old 03-21-2011
Code:
awk 'A&&NF!=2{A=0} A{printf A" ";L=1;A=x} /^$/&&L{print;L=0} L{printf " "$2","$1} NF==4{A=$1" "$2" "$3" "$4}' eigenval

# 3  
Old 03-21-2011
Thanks Chubler_XL!

When I execute that though as follows, I get the attached output file which I can't plot.
Code:
#!/bin/bash

var1=$(awk 'A&&NF!=2 {A=0} A{ printf A" "; L=1; A=x} /^$/&&L { print; L=0 } L{ printf " "$2","$1} NF==4 {A=$1" "$2" "$3" "$4}' EIGENVAL)

echo ${var1} >> out.txt

exit

Am I doing something wrong?

Thanks again,
gwr

Last edited by Franklin52; 03-21-2011 at 05:00 AM.. Reason: Please use code tags
# 4  
Old 03-21-2011
Yes, just redirect output directly to your out.txt:

Code:
#!/bin/bash
awk 'A&&NF!=2{A=0} A{printf A" ";L=1;A=x} /^$/&&L{print;L=0} L{printf " "$2","$1} NF==4{A=$1" "$2" "$3" "$4}' eigenval > out.txt

# 5  
Old 03-21-2011
Thanks Chubler_XL! Works a treat.

gwr
# 6  
Old 03-21-2011
Hi Chubler_XL,

One further question. Attached is the Excel file I get when I import the resulting text file, delimiting it by space and comma. Notice the columns with all 1's, 2's, 3's, etc. Is there anyway to get rid of these columns? It's a real pain for plotting. Preferably, I would like these numbers to appear once above their respective energy columns as headings.

Thanks again!

gwr
# 7  
Old 03-21-2011
Yep this should do it - just using comma as delimiter now:

Code:
awk '
NR==FNR{if(Z&&NF!=2)Z=0;if(Z)C=C>$1?C:$1;if(NF==4)Z=1;next}
C{printf "X,Y,Z,GWR,";while(--C)printf ++i",";print ++i}
A&&NF!=2 {A=0} A{ printf A; L=1; A=x} /^$/&&L{print;L=0}
L{printf ","$2} NF==4{A=$1","$2","$3","$4}' eigenval eigenval > out.txt


Last edited by Chubler_XL; 03-21-2011 at 08:16 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Match text to lines in a file, iterate backwards until text or text substring matches, print to file

hi all, trying this using shell/bash with sed/awk/grep I have two files, one containing one column, the other containing multiple columns (comma delimited). file1.txt abc12345 def12345 ghi54321 ... file2.txt abc1,text1,texta abc,text2,textb def123,text3,textc gh,text4,textd... (6 Replies)
Discussion started by: shogun1970
6 Replies

2. Linux

How to run commands with pipe from text file?

Hello, I have standard loop while read -r info; do command $info done < info in info text file I have multiple commands each on line that I want to execute. When I used them in console they worked, but not with this loop. This is one of the commands in info file: grep... (4 Replies)
Discussion started by: adamlevine
4 Replies

3. Emergency UNIX and Linux Support

Executing several commands in a text file

I have a file that has about 3000 commands , listed one below the other. I would like to execute them all in one go. Is there a simpler way to do it - like a batch file processing, than executing one line at a time? (3 Replies)
Discussion started by: ggayathri
3 Replies

4. Shell Programming and Scripting

Using Linux Commands on selected text

Hi I have a XML file as shown below: <Text Text_ID="10155645315850165_10155645333075165" From="460350337463650" Created="2014-10-16T17:05:37+0000" use_count="536">This is the first text</Text> <Text Text_ID="10155645315850165_10155645317025165" From="1626711840908498"... (10 Replies)
Discussion started by: my_Perl
10 Replies

5. Shell Programming and Scripting

How can I reorganize the text file content for DB import?

Dear Madam / Sir, My Boss need to reorganize :rolleyes: the text file ready for DB import, here show you the requirment and seems not difficult but how to make it by shell script or other programming language effectively. FILE1 : user1,location1,location2,locatoin3,seat1,seat2,seat3... (4 Replies)
Discussion started by: ckwong99
4 Replies

6. Shell Programming and Scripting

script to parse text file into sql commands

Hello all, I tried searching for something similiar before posting but couldn't come up with anything that fit what I need. In Linux, I'm trying to parse through a number of files and take the info in them and put it into mysql. My file is a dump from an expect script: ---filename... (3 Replies)
Discussion started by: hamanjam
3 Replies

7. Shell Programming and Scripting

searching a file with a specified text without using conventional file searching commands

without using conventional file searching commands like find etc, is it possible to locate a file if i just know that the file that i'm searching for contains a particular text like "Hello world" or something? (5 Replies)
Discussion started by: arindamlive
5 Replies

8. UNIX for Dummies Questions & Answers

Display lines 30 to 40 of a text file using head and/or tail commands

Assume that the text file contains over 40 lines. How do you do this?!?!? (5 Replies)
Discussion started by: phunkypants
5 Replies

9. Shell Programming and Scripting

Reorganize data by using AWK

I have a file with several rows of info (^SAMPLE.........) and sevaral rows of values (ABCD_1809034 4.390243627784612). I would like to reorganize the input to desired output defined below. Thanx in advance! INPUT ^SAMPLE = GSM289470 !Sample_title = Sample 3_CAP153242 #ID_REF = #VALUE... (2 Replies)
Discussion started by: stateperl
2 Replies

10. UNIX for Dummies Questions & Answers

Copy/Paste text as commands in AIX

Hello, I'm absolutely new to this world... but I've a problem with a terminal connected via PuTTY (or Termlite) to an AIX 5.1 application. The problem: I need to paste from clipboard a text containing both input text strings and special keys as ESC, Arrows and so on, to execute in the AIX... (1 Reply)
Discussion started by: Daniele11
1 Replies
Login or Register to Ask a Question