Solved

Changing Field Separaton in NAWK

Posted on 2004-10-06
5
580 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
  • 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 20

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 20

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 20

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 20

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

Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
How to find files recursively in ftp server quickly? 7 119
LINUX : Create user with required privilages to take backup of a file system 5 76
UNIX SCP 5 77
Python Assistance 7 80
My previous tech tip, Installing the Solaris OS From the Flash Archive On a Tape (http://www.experts-exchange.com/articles/OS/Unix/Solaris/Installing-the-Solaris-OS-From-the-Flash-Archive-on-a-Tape.html), discussed installing the Solaris Operating S…
Why Shell Scripting? Shell scripting is a powerful method of accessing UNIX systems and it is very flexible. Shell scripts are required when we want to execute a sequence of commands in Unix flavored operating systems. “Shell” is the command line i…
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.

770 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