Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 589
  • Last Modified:

Changing Field Separaton in NAWK

Hi,

I have a tab delimited file called 'data.5'.  I need to change it from tab delimited to ':' delimited.

BEGIN {OFS=":"}

nawk -F ":" { print } data.5 > data5.new

Where am I going wrong?

 
0
elwayisgod
Asked:
elwayisgod
  • 4
1 Solution
 
elwayisgodAuthor Commented:
I'm getting closer,  however this just puts the colons on the end.  Can I even do this with NAWK?

nawk -F: '{ print $1"\:",$2"\:",$3"\:",$4 }' data.5 > data5.new

broncos:/Users/stoteve/regis/week5 46 % more data5.new
Dunny      John      303-555-1212      Utah: : :
Knox      Bill      402-498-7890      Nebraska: : :
Jones      Mary      908-456-1243      Montana: : :
Smith      Barb      319-456-2390      Utah: : :
Utah      Hank      301-494-1009      Wyoming: : :
0
 
tfewsterCommented:
nawk -F "\t" { print } data.5 > data5.new
(-F is the file seperator char used in the _input_ file)

The
BEGIN {OFS=":"}
syntax is fine
0
 
tfewsterCommented:
As for
nawk -F: '{ print $1"\:",$2"\:",$3"\:",$4 }' data.5 > data5.new

Two things:
It's looking for an IFS of ":"; And doesn't find it, so $1 is the whole line, "Dunny     John     303-555-1212     Utah"; $2-4 are undefined.

Plus, if you seperate the output fields with "," nawk will substitute the OFS anyway; So you would get
Dunny::John::303-555-1212::Utah
0
 
tfewsterCommented:
Tested with Gnu awk, but I'm confident it will work with nawk ;-)

awk -F"\t" 'BEGIN {OFS=":"} {print $1,$2,$3}' data.5 > data5.new
0
 
tfewsterCommented:
Oops, missed $4
awk -F"\t" 'BEGIN {OFS=":"} {print $1,$2,$3,$4}' data.5 > data5.new
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now