rearrange a file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting rearrange a file
# 1  
Old 01-14-2009
rearrange a file

hi!
in awk, i have a file like this:

Code:
Trace1: WRIT,Trace2: BLAN,Trace3: BLAN,
-47.2120018005371,,,39815.4809027778
-46.3009986877441,,,39815.4809027778
-46.277000427246,,,39815.4809143519
-46.7389984130859,,,39815.4809259259
-46.3460006713867,,,39815.4809259259
-45.9309997558593,,,39815.4809375
-46.9119987487792,,,39815.4809490741
-46.5379981994628,,,39815.4809606482
-46.9640007019042,,,39815.4809722222
-46.8390007019042,,,39815.4809722222
-47.1399993896484,,,39815.4809837962
-46.1370010375976,,,39815.4809953704
...

with many many lines
my problem is that i want to change this presentation:
skip the 1st line, keep the first hundred lines, and the last colums as the first row and the the first column as the 2nd row.
How can i do that?
in example:
39815.4809027778,39815.4809027778,39815.4809143519,...
-47.2120018005371,-46.3009986877441,-46.277000427246...

thank you!
# 2  
Old 01-14-2009
Hammer & Screwdriver Here is one approach

Code:
> cat file141
Trace1: WRIT,Trace2: BLAN,Trace3: BLAN,
-47.2120018005371,,,39815.4809027778
-46.3009986877441,,,39815.4809027778
-46.277000427246,,,39815.4809143519
-46.7389984130859,,,39815.4809259259
-46.3460006713867,,,39815.4809259259
-45.9309997558593,,,39815.4809375
-46.9119987487792,,,39815.4809490741
-46.5379981994628,,,39815.4809606482
-46.9640007019042,,,39815.4809722222
-46.8390007019042,,,39815.4809722222
-47.1399993896484,,,39815.4809837962
-46.1370010375976,,,39815.4809953704

> cat fix141
tail +2 file141 | cut -d"," -f4 | tr "\n" "," >file141.tmp
echo "~" >>file141.tmp
tail +2 file141 | cut -d"," -f1 | tr "\n" "," >>file141.tmp
echo "~" >>file141.tmp
sed "s/,~//g" file141.tmp >file141.out
cat file141.out

> fix141
39815.4809027778,39815.4809027778,39815.4809143519,39815.4809259259,39815.4809259259,39815.4809375,39815.4809490741,39815.4809606482,39815.4809722222,39815.4809722222,39815.4809837962,39815.4809953704
-47.2120018005371,-46.3009986877441,-46.277000427246,-46.7389984130859,-46.3460006713867,-45.9309997558593,-46.9119987487792,-46.5379981994628,-46.9640007019042,-46.8390007019042,-47.1399993896484,-46.1370010375976

# 3  
Old 01-14-2009
It's easy for awk

Code:
BEGIN {
    FS = ","
    tmp1 = "/tmp/" PROCINFO["pid"] ".1"
    tmp2 = "/tmp/" PROCINFO["pid"] ".2"
}

{
    if (another_line) {
        printf "," >>tmp1
        printf "," >>tmp2
    }
    else
        another_line = 1

    printf $NF >>tmp1
    printf $1 >>tmp2
}

END {
    close(tmp1)
    close(tmp2)
    if (another_line) {
        system("cat " tmp1)
        print ""
        system("cat " tmp2)
        print ""
    }

    system("rm -f " tmp1)
    system("rm -f " tmp2)
}

# 4  
Old 01-14-2009
Quote:
Originally Posted by riderman
hi!
in awk, i have a file like this:

Code:
Trace1: WRIT,Trace2: BLAN,Trace3: BLAN,
-47.2120018005371,,,39815.4809027778
-46.3009986877441,,,39815.4809027778
-46.277000427246,,,39815.4809143519
-46.7389984130859,,,39815.4809259259
-46.3460006713867,,,39815.4809259259
-45.9309997558593,,,39815.4809375
-46.9119987487792,,,39815.4809490741
-46.5379981994628,,,39815.4809606482
-46.9640007019042,,,39815.4809722222
-46.8390007019042,,,39815.4809722222
-47.1399993896484,,,39815.4809837962
-46.1370010375976,,,39815.4809953704
...

with many many lines
my problem is that i want to change this presentation:
skip the 1st line, keep the first hundred lines, and the last colums as the first row and the the first column as the 2nd row.
How can i do that?
in example:
39815.4809027778,39815.4809027778,39815.4809143519,...
-47.2120018005371,-46.3009986877441,-46.277000427246...

Code:
awk -F, 'BEGIN { OFS = FS }
NR == 1 { next }
NR < 100 { print; next }
{
 $0 = $NF "," $0
 $NF = ""
 print
}
' "$FILE"

# 5  
Old 01-14-2009
Try this:

Code:
tail +2 <myfile> | head -100 | awk 'BEGIN { FS=","; COL1=""; COL2="" } { COL1 = COL1 $1; COL2 = COL2 $4 } END { print COL2 "\n" COL1 }'

Padow
# 6  
Old 01-14-2009
sorry doesn't work...
fyi i'm using awk95 in a windows xp...
# 7  
Old 01-14-2009
Quote:
Originally Posted by riderman
sorry doesn't work...
fyi i'm using awk95 in a windows xp...

What does "doesn't work" mean? What happens? In what way is it not what you want?

Which script "doesn't work"?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Rearrange fields of delimited text file

I want to rearrange the fields of delimited text file after sorting first line (only): input file: a_13;a_2;a_1;a_10 13;2;1;10 the result should be: a_1;a_2;a_10;a_13 1;2;10;13 any help would be appreciated andy (20 Replies)
Discussion started by: andy2000
20 Replies

2. Shell Programming and Scripting

A cleaner way to rearrange column

Hello, I have some tab delimited text data, index name chg_p chg_m 1 name,1 1 0 2 name,2 1 1 3 name,3 1 0 4 name,4 1 0 5 name,5 1 1 I need to duplicate the "index" column, call it "id" and insert it after the... (8 Replies)
Discussion started by: LMHmedchem
8 Replies

3. Shell Programming and Scripting

Rearrange a file (2000 base64 strings in 1 row into 1 string by rows)

I have 1 row which contains abouts 20000 base64 string. e.g: /p4bdllBS8qcvW/69GUYej8nEv6gwt7UAYl0g==WZdjwTUQX9UEKsT/zWaZdQ==uI would like rearrange this file by base64 strings. So the output should be this ( 1 string in 1 row): 69GUYej8nEv6gwt7UAYl0g== WZdjwTUQX9UEKsT/zWaZdQ==How could I do... (4 Replies)
Discussion started by: freeroute
4 Replies

4. UNIX for Dummies Questions & Answers

Transpose matrix, and rearrange columns common with another file

This is my first post, I apologize if I have broken rules. Some assistance with the following will be very helpful. I have a couple of files, both should ultimately have common columns only, arranged in the same order. This file needs to be transposed, to bring the rows to columns ... (2 Replies)
Discussion started by: abh.kumar
2 Replies

5. Shell Programming and Scripting

Using awk to rearrange fields

Hi, I am required to arrange columns of a file i.e make the 15th column into the 1st column. I am doing awk 'begin {fs=ofs=","} {print $15,$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14}' ad.data>ad.csv the problem is that column 15 gets to column 1 but it is not comma separated with the... (10 Replies)
Discussion started by: seddoubt
10 Replies

6. Shell Programming and Scripting

Rearrange the text file

Gents, I have a large file and each line of the file contains more than 200 bytes.Please let me a way to have the new line to start when the word "FIT" appears. I was trialling with 'tr' command but i am not sure how to get it based on bytes and so it wasn't working... Current... (3 Replies)
Discussion started by: appu2176
3 Replies

7. UNIX for Dummies Questions & Answers

Help rearrange the content of the file.

Hi all, I need to rearrange the content of the file. I need to move line 1 to 4, 2 to 3, 3 to 2, and 4 to 1. IPlease help. I was thinking about using head and tail command. Here is the original file. aa bb cc dd Here is what I need it to be. dd cc bb aa Thanks. (6 Replies)
Discussion started by: sirrtuan
6 Replies

8. Shell Programming and Scripting

rearrange info of file in a "table"

Please I need to rearrange data acquired by USB port from a sensor network. The information is mixed and I need to convert it into a kind of table. This is my input file: Node 4D5A joined Temperature: 27,5 Humidity: 40 Dew Point: 23 No motion detected LUX: 389 Temperature: 28 Humidity: 41... (5 Replies)
Discussion started by: csecnarf
5 Replies

9. Shell Programming and Scripting

Need help with a script to rearrange columns

I have a file that is semi-colon delimited and the column headers are always the same but the column number is totally random each time this file is generated. I don't have the skills to make a script for this so maybe someone can help. I would like to be able to take this file which has over... (11 Replies)
Discussion started by: n3al10
11 Replies

10. UNIX for Dummies Questions & Answers

Rearrange bytes within a txt file

I have a text file with a very long list of dates, one date per line. Each date is in the same format yyyymmdd. I need the dates to be in mmddyyyy format. This is part of a larger tcsh shell script. I am just learning unix and came up with: for each line in file for each character in... (4 Replies)
Discussion started by: yankee428
4 Replies
Login or Register to Ask a Question