Split column data if the table has n number of column's with some record


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Split column data if the table has n number of column's with some record
# 8  
Old 10-21-2015
My script splits after field x that is calculated as the half of the "number of fields" (NF).
Code:
NR==1 {x=NF/2}

You can modify that to a fixed value
Code:
NR==1 {x=2}

# 9  
Old 10-21-2015
if we have five fields col1 col2 below col3 then below col4 and col5 will display please help me out using this code code
Code:
awk -F "|" '{print $1,$2; s=s $3 ORS ; s=s $3 ; s=s $4 OFS $5 ORS} END{printf "%s%s",s,s}' file


Last edited by vgersh99; 10-21-2015 at 05:01 PM.. Reason: code tags, please!
# 10  
Old 10-21-2015
Quote:
Originally Posted by Priti2277
if we have five fields col1 col2 below col3 then below col4 and col5 will display please help me out using this code code
Code:
awk -F "|" '{print $1,$2; s=s $3 ORS ; s=s $3 ; s=s $4 OFS $5 ORS} END{printf "%s%s",s,s}' file

you've been asked to use code tags when posting data/code sample. Please follow the forum rules.

I don't quite understand the requirement - you need to be much more descriptive. Is that something new you need?
What about the previously suggested solutions? Have those been tried? What are the results?
# 11  
Old 10-21-2015
It is getting extremely old producing a new script for each output order you want. Let's try a configurable script. Feed it a configuration file that contains one line for each output section you want to create where each line contains a space separated list of the field numbers you want to print in the section corresponding to the line number in the configuration file and then give it the name of the file you want to extract fields from for the first output section, the name of the file you want to extract fields from for the second output section, etc., with one input file for each line in the configuration file:
Code:
#!/bin/ksh
printf '%s\n' "1 2" 3 "6 5 4" | awk '
FNR == 1 {
	fc++
}
fc == 1 {
	# Read fields to be included in each segment of hte output.
	for(i = 1; i <= NF; i++)
		osfo[NR + 1, i] = $i
	osc[NR + 1] = NF
	next
}
{	for(i = 1; i <= osc[fc]; i++)
		printf("%s%s", $osfo[fc, i], i == osc[fc] ? ORS : OFS)
}' - file file file

In this example we create a configuration file (using the printf command in a pipeline and specify the input file name - to read it from standard input) to print fields 1 and 2 in the first output section; field 3 in the second output section; and fields 6, 5, and 4 (in that order) in the third output section. Since the 3 input files in this example all have the same name, we'll be extracting fields from the same file. If the file named file contains:
Code:
1 2 3 a b c
3 4 5 c d e
7 8 9 f g h

(as in one of your many examples), the output will be:
Code:
1 2
3 4
7 8
3
5
9
c b a
e d c
h g f

If you want to change the output field separators for various sections, you can specify that in the list of files. For example, if you change the last line to:
Code:
}' - OFS="," file file OFS="|" file

the output will be:
Code:
1,2
3,4
7,8
3
5
9
c|b|a
e|d|c
h|g|f

Will this meet your many and varied requirements?
# 12  
Old 10-21-2015
Yes Thanks for your replay Now I can able to do as per my requirements
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk split columns to row after N number of column

I want to split this with every 5 or 50 depend on how much data the file will have. And remove the comma on the end Source file will have 001,0002,0003,004,005,0006,0007,007A,007B,007C,007E,007F,008A,008C Need Output from every 5 tab and remove the comma from end of each row ... (4 Replies)
Discussion started by: ranjancom2000
4 Replies

2. Shell Programming and Scripting

Split column data if the table has n number of column's

please write a shell script Table -------------------------- 1 2 3 a b c 3 4 5 c d e 7 8 9 f g h Output should be like this --------------- 1 2 3 3 4 5 7 8 9 a b c c d e f g h (1 Reply)
Discussion started by: Priti2277
1 Replies

3. Shell Programming and Scripting

Split column into two on first occurence of any number

Input : abc def 1 xyz zzz bca cde 2 yyy xxx Expected output : abc def |1 xyz zzz bca cde |2 yyy xxx I have tried the command below and losing the number. Any help is greatly appreciated 1. sed 's//|/' num.txt Result: abc def | xyz zzz bca cde |... (7 Replies)
Discussion started by: kbsuryadev
7 Replies

4. UNIX for Dummies Questions & Answers

Match sum of values in each column with the corresponding column value present in trailer record

Hi All, I have a requirement where I need to find sum of values from column D through O present in a CSV file and check whether the sum of each Individual column matches with the value present for that corresponding column present in the trailer record. For example, let's assume for column D... (9 Replies)
Discussion started by: tpk
9 Replies

5. Shell Programming and Scripting

Problem facing to compare different column and print out record with smallest number

Hi, Input file 1 : 37170 37196 77 51 37174 37195 73 52 37174 37194 73 53 Desired Output file 1 : 37170 37196 77 51 Input file 2 : 37174 37195 73 0 37170 37196 77 0 Desired Output file 2 : 37174 37195 73 0 (1 Reply)
Discussion started by: cpp_beginner
1 Replies

6. Shell Programming and Scripting

Problem to print out record got smallest number in specific column

Hi, Anybody know how to print out the record that shown smallest number among column 3 and column 4 Case 1 Input : 37170 37196 77 51 37174 37195 73 52 37174 37194 73 53 Case 1 Output : 37170 37196 77 51 Case 2 Input : 469613 469660 73 ... (4 Replies)
Discussion started by: cpp_beginner
4 Replies

7. Shell Programming and Scripting

awk to sum a column based on duplicate strings in another column and show split totals

Hi, I have a similar input format- A_1 2 B_0 4 A_1 1 B_2 5 A_4 1 and looking to print in this output format with headers. can you suggest in awk?awk because i am doing some pattern matching from parent file to print column 1 of my input using awk already.Thanks! letter number_of_letters... (5 Replies)
Discussion started by: prashob123
5 Replies

8. UNIX for Advanced & Expert Users

Data from table to column

Hi All, in bash I have a text file which is something like 7.96634E-07 1.0000 0.00000E+00 0.0000 0.00000E+00 0.0000 1.59327E-06 0.7071 2.23058E-05 0.1890 6.61207E-05 0.1098 1.13919E-04 0.0865 1.47377E-04 0.0747 .... .... 0.00000E+00 0.0000 0.00000E+00 0.0000 ... (6 Replies)
Discussion started by: f_o_555
6 Replies

9. Windows & DOS: Issues & Discussions

Split Data in one column into 2 column in Excel using DOS or VBScript

Hi I have some data in my Excel File.However all the data is in one single column.I want to split it into two columns. Current Data: 1,Hi Everyone,I am 7,New To Dos,And 17,VB Script,i could 110,have tried this thing 1800,in UNIX Desired Output CELL1|CELL 2 1 |Hi... (3 Replies)
Discussion started by: dashing201
3 Replies

10. Shell Programming and Scripting

Split single file into multiple files based on the number in the column

Dear All, I would like to split a file of the following format into multiple files based on the number in the 6th column (numbers 1, 2, 3...): ATOM 1 N GLY A 1 -3.198 27.537 -5.958 1.00 0.00 N ATOM 2 CA GLY A 1 -2.199 28.399 -6.617 1.00 0.00 ... (3 Replies)
Discussion started by: tomasl
3 Replies
Login or Register to Ask a Question