Sponsored Content
Top Forums UNIX for Beginners Questions & Answers Sort by values in the 1st row, leaving first four coulumns untouched Post 303006389 by RudiC on Wednesday 1st of November 2017 11:12:08 AM
Old 11-01-2017
Apart from solving above line length problems, here's something to start with if the problem doesn't hit system limits:
Code:
awk -F"\t" '
NR == 1         {printf "%s", substr ($0, 1, index($0, $5)-1)
                 for (i=5; i<=NF; i++) ORG[$i] = i
                 OFS = "\n"
                 sub ($1 FS $2 FS $3 FS $4 FS, "")
                 $1 = $1
                 CNT = 5
                 OFS = FS
                 while (1 == ("echo \"" $0 "\" | sort -k1.2n") | getline X)     {COL[CNT++] = X
                                                                                 HD = HD DL X
                                                                                 DL = FS
                                                                                }
                 print HD
                 next
                }
                {for (i=1; i<= 4; i++) printf "%s%c", $i, FS
                 for (i=5; i<=NF; i++) printf "%s%c", $(ORG[COL[i]]), i==NF?ORS:OFS
                }
' file
a	b	c	d	V2	V4	V7 	V8	V10
xx	z	y	1000	2	2	0	0	1
tr	v	m	1001	0	2	2	1	0
rg	s	n	1003	1	0	0	2	1

Most of the processing for the first line is for sorting the columns; my awk doesn't have a sorting algortihm, unfortunately.

Last edited by RudiC; 11-01-2017 at 12:19 PM..
This User Gave Thanks to RudiC For This Post:
 

10 More Discussions You Might Find Interesting

1. Programming

copying or concatinating string from 1st bit, leaving 0th bit

Hello, If i have 2 strings str1 and str2, i would like to copy/concatenate str2 to str1, from 1st bit leaving the 0th bit. How do i do it? (2 Replies)
Discussion started by: jazz
2 Replies

2. Shell Programming and Scripting

sort and semi-duplicate row - keep latest only

I have a pipe delimited file. Key is field 2, date is field 5 (as example, my real file is more complicated of course, but the KEY and DATE are accurate) There can be duplicate rows for a key with different dates. I need to keep only rows with latest date in this case. Example data: ... (4 Replies)
Discussion started by: LisaS
4 Replies

3. Shell Programming and Scripting

How to insert data befor some field in a row of data depending up on values in row

Hi I need to do some thing like "find and insert before that " in a file which contains many records. This will be clear with the following example. The original data record should be some thing like this 60119827 RTMS_LOCATION_CDR INSTANT_POSITION_QUERY 1236574686123083rtmssrv7 ... (8 Replies)
Discussion started by: aemunathan
8 Replies

4. Shell Programming and Scripting

Sort a file from specific row onwards

Hello All: I've file in below format. File name is "FIRSTN.TBL": AAAAAA N BBBBBBBBBBBBBBBBBBBBBBB N . . . . ZZZZZZZZZZZZZZZZZZZZZZZZZZ N My file row length is 40 characters and my second column will start from 25th column and it is only... (3 Replies)
Discussion started by: nvkuriseti
3 Replies

5. Shell Programming and Scripting

Sort data from column to row

Hi, I need somebody's help with sorting data with awk. I've got a file: 10 aaa 4584 12 bbb 6138 20 ccc 4417 21 ddd 7796 10 eee 7484 12 fff ... (5 Replies)
Discussion started by: killerbee
5 Replies

6. Shell Programming and Scripting

Keep 3 values in each row

Hi, I have n number of values like 1 2 3 4 I want the output like 1 2 3 4 5 6 - - - - - - Please help me on this:wall: (4 Replies)
Discussion started by: cns1710
4 Replies

7. Shell Programming and Scripting

Sort each row (horizontally) in AWK or any

Hello, How to sort each row in a document with numerical values and with more than one row. Example Input data (file1.txt): 4 6 8 1 7 2 12 9 6 10 6 1 14 5 7 and I want the the output to look like this(file2.txt): 1 4 6 7 8 2 6 9 10 12 1 5 6 7 14 I've tried sort -n file1.txt >... (12 Replies)
Discussion started by: joseamck
12 Replies

8. Shell Programming and Scripting

awk transpose column to row and sort

I am trying to awk the output from below output for each port: i need separate line with comma source file Output required (3 Replies)
Discussion started by: ranjancom2000
3 Replies

9. Shell Programming and Scripting

Sort by first row - awk

how can i sort the table based on first row? thanks in advance input name d b c a l l1 l2 l3 l4 l1 1 2 3 4 l2 2 2 2 1 l3 1 1 2 2ouput name a b c d l1 l4 ... (4 Replies)
Discussion started by: quincyjones
4 Replies

10. Shell Programming and Scripting

awk to remove mutiple values from specific pattern, leaving a single value

In the awk below I am trying to remove all instances after a ; (semi-colon) or , (comma) in the ANN= pattern. I am using gsub to substitute an empty string in these, so that ANN= is a single value (with only one value in it the one right after the ANN=). Thank you :). I have comented my awk and... (11 Replies)
Discussion started by: cmccabe
11 Replies
STRSPN(3)								 1								 STRSPN(3)

strspn - Finds the length of the initial segment of a string consisting entirely of characters contained within a given mask.

SYNOPSIS
int strspn (string $subject, string $mask, [int $start], [int $length]) DESCRIPTION
Finds the length of the initial segment of $subject that contains only characters from $mask. If $start and $length are omitted, then all of $subject will be examined. If they are included, then the effect will be the same as call- ing strspn(substr($subject, $start, $length), $mask) (see "substr" for more information). The line of code: <?php $var = strspn("42 is the answer to the 128th question.", "1234567890"); ?> 2 to $var, because the string "42" is the initial segment of $subject that consists only of characters contained within "1234567890". PARAMETERS
o $subject - The string to examine. o $mask - The list of allowable characters. o $start - The position in $subject to start searching. If $start is given and is non-negative, then strspn(3) will begin examining $sub- ject at the $start'th position. For instance, in the string ' abcdef', the character at position 0 is ' a', the character at posi- tion 2 is ' c', and so forth. If $start is given and is negative, then strspn(3) will begin examining $subject at the $start'th position from the end of $subject. o $length - The length of the segment from $subject to examine. If $length is given and is non-negative, then $subject will be examined for $length characters after the starting position. If $length is given and is negative, then $subject will be examined from the starting position up to $length characters from the end of $subject. RETURN VALUES
Returns the length of the initial segment of $subject which consists entirely of characters in $mask. EXAMPLES
Example #1 strspn(3) example <?php // subject does not start with any characters from mask var_dump(strspn("foo", "o")); // examine two characters from subject starting at offset 1 var_dump(strspn("foo", "o", 1, 2)); // examine one character from subject starting at offset 1 var_dump(strspn("foo", "o", 1, 1)); ?> The above example will output: int(0) int(2) int(1) NOTES
Note This function is binary-safe. SEE ALSO
strcspn(3). PHP Documentation Group STRSPN(3)
All times are GMT -4. The time now is 07:36 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy