Solved

Changing Field Separaton in NAWK

Posted on 2004-10-06
5
583 Views
Last Modified: 2006-11-17
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
Comment
Question by:elwayisgod
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
5 Comments
 

Author Comment

by:elwayisgod
ID: 12245617
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
 
LVL 21

Expert Comment

by:tfewster
ID: 12246200
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
 
LVL 21

Expert Comment

by:tfewster
ID: 12246222
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
 
LVL 21

Expert Comment

by:tfewster
ID: 12246256
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
 
LVL 21

Accepted Solution

by:
tfewster earned 50 total points
ID: 12246269
Oops, missed $4
awk -F"\t" 'BEGIN {OFS=":"} {print $1,$2,$3,$4}' data.5 > data5.new
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

When you do backups in the Solaris Operating System, the file system must be inactive. Otherwise, the output may be inconsistent. A file system is inactive when it's unmounted or it's write-locked by the operating system. Although the fssnap utility…
Installing FreeBSD… FreeBSD is a darling of an operating system. The stability and usability make it a clear choice for servers and desktops (for the cunning). Savvy?  The Ports collection makes available every popular FOSS application and packag…
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.

734 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question