processing a file with sed and awk


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
# 1  
processing a file with sed and awk

Hello,

I have what is probably a simple task in text manipulation, but I just can't wrap my brain around it.

I have a text file that looks something like the following. Note that some have middle initials in the first field and some don't.

john.r.smith:john.smith@yahoo.com
george.w.bush:gwbush@whitehouse.gov
larry.doby:ldoby@hotmail.com
tom.t.hall:tom.t.hall@nashville.com


I want to end up with a file that looks something like this:


john<tab>smith<tab>john.smith@yahoo.com
george<tab>bush<tab>gwbush@whitehouse.gov
larry<tab>doby<tab>ldoby@hotmail.com
tom<tab>hall<tab>tom.t.hall@nashville.com

So, I want to split each line into two fields separated by a tab. I was able to easily do this with awk and wrote it to file.

awk -F':' '{print $1"\t"$2}' inputfile > outputfile

I want to eliminate the middle initial in field 1, if present. I can do that with sed, but how can I process only field 1 and leave field 2 intact?

Your suggestions are most welcome.
# 2  
One way.
Code:
sed -e 's%\.[a-z]\.%.%' -e 's%\.%        %' -e 's%:%     %'

note the big spaces are literal tabs, which you can usually get by typing ^v<tab>
# 3  
there u go

due to the limitation of sed to interprete \t as a tab..and not wanting to tupe a TAB..i am using awk..combined with sed..

this shud work for you...

sed 's/\(.*\)\.\.*\(.*\)\.\.*\(.*\)\:/\1\.\3\:/g' inputfile |nawk -F':' '{sub(/\./,"\t",$1);print $1,"\t",$2}'

cheers,
Devaraj Takhellambam
# 4  
can you explain how that command works.

Thanks
S
# 5  
Assuming single-character middle initials:

Code:
awk '{sub(/\..\.*/,"\t",$1)}1' FS=":" OFS="\t" filename

Use nawk or /usr/xpg4/bin/awk on Solaris.
Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #986
Difficulty: Medium
The X Window System is installed by default in FreeBSD.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Processing a formatted file with awk

Hi - I want to interrogate information about my poker hands, sessions are all recorded in a text file in a particular format. Each hand starts with the string <PokerStars> followed by a unique hand reference and other data like date/time. There is then all the information about each hand. My first... (5 Replies)
Discussion started by: rbeech23
5 Replies

2. Shell Programming and Scripting

Help with file processing using awk

hello All, I'm new to AWK programming and learned myself few things to process a file and deal with duplicate lines, but I got into a scenario which makes me clueless to handle. Here is the scenario.. Input file: user role ----- ---- AAA add AAA delete BBB delete CCC delete DDD ... (10 Replies)
Discussion started by: julearn
10 Replies

3. UNIX for Dummies Questions & Answers

awk - Rename output file, after processing, same as input file

I have one input file ABC.txt and one output DEF.txt. After the ABC is processed and created output, I want to rename ABC.txt to ABC.orig and DEF to ABC.txt. Currently when I am doing this, it does not process the input file as it cannot read and write to the same file. How can I achieve this? ... (12 Replies)
Discussion started by: High-T
12 Replies

4. Programming

awk processing / Shell Script Processing to remove columns text file

Hello, I extracted a list of files in a directory with the command ls . However this is not my computer, so the ls functionality has been revamped so that it gives the filesizes in front like this : This is the output of ls command : I stored the output in a file filelist 1.1M... (5 Replies)
Discussion started by: ajayram
5 Replies

5. Shell Programming and Scripting

Help with File Processing (AWK)

Input File: 1234, 2345,abc 1,24141,gw 222,rff,sds 2232145,sdsd,121 Output file to be generated: 000001234,2345,abc 000000001,24141,gw 000000222,rff,sds 002232145,sdsd,121 i.e; the first column is padded to get 9 digits. I tried with following: (3 Replies)
Discussion started by: karumudi7
3 Replies

6. Shell Programming and Scripting

Help with File Processing (AWK)

Input File: 1234, 2345,abc 1,24141,gw 222,rff,sds 2232145,sdsd,121 Output file to be generated: 000001234,2345,abc 000000001,24141,gw 000000222,rff,sds 002232145,sdsd,121 i.e; the first column is padded to get 9 digits. I tried with following: (1 Reply)
Discussion started by: karumudi7
1 Replies

7. Programming

AWK processing of a three-column file

I have a 3-column data file, for which I wish to print certain parts of $3 PHI PSI A(x) -177.5 -177.5 1.0625 -177.5 -172.5 0.55 -177.5 -167.5 0.0478125 -177.5 -162.5 0 -177.5 -157.5 0.284375 -177.5 -152.5 0.187188 -177.5 -147.5 0.236875 -177.5 -142.5 0.383438 -177.5 ... (3 Replies)
Discussion started by: chrisjorg
3 Replies

8. Shell Programming and Scripting

awk help in processing file.

I am trying to process file which has following data #23456789012345 ACNASPSA13N0N0 ACNAPCPA05N0N0 ACNAFATS11N0N0 I want to take out each line from the file and what to put in the file by name which if part of the line starting from offset 10 to 15. It means I want to create three file... (3 Replies)
Discussion started by: ekb
3 Replies

9. Shell Programming and Scripting

text processing ( sed/awk)

hi.. I have a file having record on in 1 line.... I want every 400 characters in a new line... means in 1st line 1-400 in 2nd line - 401-800 etc pl help. (12 Replies)
Discussion started by: clx
12 Replies

10. Shell Programming and Scripting

Preparing LaTeX files using Sed/AWK for processing with latex2html

As the title states, my issue involves preparing LaTeX documents for processing with latex2html. Within my LaTeX docs I have used a package which allows me to cleanly display source code listings. However the package is not supported by latex2html which, when processed, does not display the... (3 Replies)
Discussion started by: oski
3 Replies

Featured Tech Videos