awk - treating remaining columns as one


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk - treating remaining columns as one
# 1  
Old 11-13-2012
awk - treating remaining columns as one

Hi all,

For no particular reason, I would like to use awk on a file that contains multiple columns, but let's say only columns 1 and 2 have some text values, and the remainder of the line contains text that I would like to treat as one column, considering I have spaces as delimiter for the columns, e.g.:

Code:
alpha 200 this is a comment for this record
bravo 400 this is another comment for this record

I would like awk to output $1, $2 and $3 as

$1 = alpha
$2 = 200
$3 = this is a comment for this record

Ideas?

Last edited by Scrutinizer; 11-13-2012 at 10:23 PM.. Reason: code tags
# 2  
Old 11-13-2012
Assuming your comments do not contain doublequote:
Code:
sed 's/ / "/2;s/$/"/' yourfile | xargs -n1

These 2 Users Gave Thanks to ctsgnb For This Post:
# 3  
Old 11-13-2012
Quote:
Originally Posted by ctsgnb
Code:
sed 's/ / "/2;s/$/"/' yourfile | xargs -n1

nice, but I was looking for a way to do it in awk... any ideas?
# 4  
Old 11-13-2012
Code:
awk '{a=$1"\n"$2;sub(".*"$3,$3);print a"\n"$0}' yourfile

Code:
awk 'sub(".*"$3,$1RS$2RS$3)' yourfile


Last edited by ctsgnb; 11-13-2012 at 08:43 PM..
This User Gave Thanks to ctsgnb For This Post:
# 5  
Old 11-13-2012
Quote:
Originally Posted by ctsgnb
Code:
awk '{a=$1"\n"$2;sub(".*"$3,$3);print a"\n"$0}' yourfile

That is nice... would it be a trouble for you to explain to me what each part does? (sorry, I am really a newcomer)
# 6  
Old 11-13-2012
Quote:
Originally Posted by ctsgnb
Code:
awk '{a=$1"\n"$2;sub(".*"$3,$3);print a"\n"$0}' yourfile

This doesn't capture all fields from $3 to NF. Please re-check.

Here's one:
Code:
awk '{a=$1; b=$2; c=$3; for(i=4;i<=NF;i++){c=c" "$i}; print a"\n"b"\n"c} ' file

# 7  
Old 11-13-2012
Quote:
Originally Posted by balajesuri
This doesn't capture all fields from $3 to NF. Please re-check.

Here's one:
Code:
awk '{a=$1; b=$2; c=$3; for(i=4;i<=NF;i++){c=c" "$i}; print a"\n"b"\n"c} ' file

It looks better, sorry I maybe did not express correctly, I still need the columns to show on the same row, I just want awk to treat from $3 forward (for as many delimiters it may have on that line, $4, $5, $6, etc) as $3, so the output would be $1 $2 $3, e.g.

print $3 would print "this is a comment for this record"

Last edited by ppucci; 11-13-2012 at 08:56 PM.. Reason: i can't words
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Awk: duplicate column and print remaining as is

Hello there I'd like to make a copy of 2nd column and have it printed in place of column 1. Remaining columns are needed as it. test data: ProbeSet GeneSymbol X22565285 X22566285 ILMN_1050008 MYOCD 6.577 7.395 ILMN_1050014 GPRC6A 6.595 6.668 ILMN_1050017 ... (2 Replies)
Discussion started by: genome
2 Replies

2. Shell Programming and Scripting

AIX to RHEL migration - awk treating 0e[0-9]+ as 0 instead of string issue

Greetings Experts, We are migrating from AIX to RHEL Linux. I have created a script to verify and report the NULLs and SPACEs in the key columns and duplicates on key combination of "|" delimited set of big files. Following is the code that was successfully running in AIX. awk -F "|" 'BEGIN {... (5 Replies)
Discussion started by: chill3chee
5 Replies

3. Shell Programming and Scripting

awk treating variables differently in UNIX-Linux

Hi, awk seem to be acting differently in Unix and Linux when it comes to formatting. This is making it difficult to migrate scripts. for example: UNIX: echo "123" |awk '{printf ("%05s\n" ,$1)}' 00123 echo "123" |awk '{printf ("%05d\n" ,$1)}' 00123 echo "S12" |awk '{printf ("%05s\n"... (9 Replies)
Discussion started by: wanderingmind16
9 Replies

4. Shell Programming and Scripting

Comparison treating strings as zero integers

I'm trying to write a bash script to perform basic arithmetic operations but I want to run a comparison on the arguments first to check that they're a number greater than zero. I want an error to pop up if the arguments args aren't >= 0 so I have: if ! ]; then echo "bad number: $1" fi ... (14 Replies)
Discussion started by: TierAngst
14 Replies

5. Shell Programming and Scripting

treating multiple delimiters[solved]

Hi, I need to display the last column value in the below o/p. sam2 PS 03/10/11 0 441 Unable to get o/p with this awk code awk -F"+" '{ print $4 }' pwdchk.txt I need to display 441(in this eg.) and also accept it as a variable to treat it with if condition and take a decision.... (1 Reply)
Discussion started by: sam_bd
1 Replies

6. Shell Programming and Scripting

Treating string as date ?

Is there a way to treat a string as date and compare it to the current date? lets assum inpu lik $ cat myfile Name Last login ************************** Sara 2/13/2012 kalpeer 2/15/2012 ygemici 2/14/2012 we want to display the name who logged in during the last #... (4 Replies)
Discussion started by: Sara_84
4 Replies

7. Shell Programming and Scripting

Treating Strings with spaces

I have a file list.txt which has a list of file names with spaces between the file names like /emptydir/file 1 how do i browse through the list.txt displaying the filenames. Almost all the file names in list.txt have space between them.This file list.txt is formed by using the find statement to... (5 Replies)
Discussion started by: kinny
5 Replies

8. Shell Programming and Scripting

TRAP treating

Hi, I'm looking for a script that receives the traps from a windows machine and treate them. For exemple just write a line in a file on UNIX server. Can you help me ? Thank you. (2 Replies)
Discussion started by: big123456
2 Replies

9. Shell Programming and Scripting

treating special chars

Hi, I need some advise on treating non printable chars over ascii value 126 Case 1 : On some fields in the text , I need to retiain then 'as-is' and load to a database.I understand it also depends on database codepage. but i just wanna know how do i ensure it do not change while loading... (1 Reply)
Discussion started by: braindrain
1 Replies
Login or Register to Ask a Question