How to separate file content


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers How to separate file content
# 15  
Old 08-15-2008
If the format does not include the spaces as originally posted, then all bets are off to be able to separate the last two fields. I tried my previous post under other conditions and it did not work as desired, so I have modified my original post with the formatting of a following post and tested it under various conditions, but again, it will only work given the spacing conditions of the original post.
Code:
sed s/'    '/:/g filename | awk -F: '{printf"%s\n%s\n%s\n\n",$1,$2,$4}'

or
Code:
sed s/'        '/:/ filename | sed s/'    '/:/ | awk -F: '{printf"%s\n%s\n%s\n\n",$1,$2,$3}'

and again the colon (":") could be any character as long as it is not found in any of the 700 lines of your file.

Last edited by runmeat6; 08-15-2008 at 01:38 PM..
# 16  
Old 08-15-2008
Dear runmeat6,

Sorry to differentiate i have given like this.
Actually : is not in my file.
The following values are exact values

1st field is "Aegean Coast [Blks 1-3, 5-8 & CP]"
2nd field is So Kwun Wat
3rd filed is Sun Hung Kai Properites Ins Ltd

1st column value is Aberdeen Centre [Blks A-U & CP]
2nd column value is Aberdeen
3rd column value is The Ming An Ins Co (HK) Ltd

Now please help me out on this.

Thanks.
# 17  
Old 08-15-2008
If all the fields were in double ticks then just printing the even fields would work...but looks like the code, location and address fields are separated by four or more spaces??
Code:
awk -F" {4,}" '{printf("%s\n%s\n%s\n\n", $1, $2, $3)}' file

# 18  
Old 08-15-2008
Dear vinsara:

I have tried to help, but I think it is an impossible task to separate the second from the third field if the spacing is not as you originally showed it in code. I provide an alternate to separate the first field from the remaining here
Code:
sed s/]/]:/ filename | sed s/]:\"/]\":/ | awk -F: '{printf"%s\n%s\n\n",$1,$2}'

.

Last edited by runmeat6; 08-15-2008 at 05:59 PM..
# 19  
Old 08-15-2008
Quote:
Originally Posted by shamrock
If all the fields were in double ticks then just printing the even fields would work...but looks like the code, location and address fields are separated by four or more spaces??
Code:
awk -F" {4,}" '{printf("%s\n%s\n%s\n\n", $1, $2, $3)}' file

I do not believe awk will accept a range (e.g. "{4,}") because that was what I originally tried. In fact I believe awk will only accept zero or more ("*") or one or more ("+") and no matter what string you send to the FS variable with the -F option it appears to go in a set ("[ ]") string, because the four spaces followed by a + that Rubin championed earlier did not appear to work after all in tests on my system except to separate any spaced text.
# 20  
Old 08-15-2008
OK, I have found that some versions of awk will work with what Shamrock provided and what was originally provided by Rubin will work with those same versions of awk and additionally nawk.
# 21  
Old 08-15-2008
Hi.

Here is a perl solution:
Code:
#!/usr/bin/perl

# @(#) p1       Demonstrate 2-level split.

use warnings;
use strict;

my ($debug);
$debug = 1;
$debug = 0;

my ( @a, @b );
my ($lines) = 0;

while (<>) {
  $lines++;
  chomp;
  @b = split "        ";
  print "$b[0]\n" if $debug;
  print "$b[1]\n" if $debug;
  @a = split "    ", $b[0];
  print "$a[0]\n" if $debug;
  print "$a[1]\n" if $debug;

  print "$a[0]\n";
  print "$a[1]\n";
  print "$b[1]\n";
  print "\n";    # visual spacing, remove for production
}

print STDERR " ( Lines read: $lines )\n";

exit(0);

producing (first few and last few):
Code:
% ./p1 data1
Aberdeen Centre [Blks A-U  & CP]
Aberdeen
The Ming An Ins Co (HK) Ltd

Academic Terrace [Towers 1-3]
"101 Pokfulam Road, HK"
Zurich Insurance Co Ltd

Academic Terrace [Car Park Portion]
"102 Pokfulam Road, HK"
Concord Insurance Co Ltd

Admiralty Centre [Towers I & II]
MTRC Property
Zurich Insurance Co Ltd

   ...

Belvedere Garden (Phase 3) [PH03 Blks 1-7 & CP]
Tsuen Wan
The Ming An Ins Co (HK) Ltd

"Beneville [Blks 1-3, 5 & CP]"
"18 Tuen Kwai Road, Tuen Mun"
Sun Hung Kai Properites Ins Ltd

Beverly Garden  [Blks 1-10 & CP]
Tseung Kwan O
Allianz Insurance (HK) Ltd

This splits the lines on the 8-space separation into array b, then re-splits the first part, b[0], on the 4-space separation into array a, then prints the parts of interest ... cheers, drl

Last edited by drl; 08-15-2008 at 08:09 PM.. Reason: Corrected description.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

creating separate output file for each input file in python

Experts, Need your help for this. Please support My motive is to create seperate output file for each Input Files(File 1 and File2) in another folder say(/tmp/finaloutput) Input files File 1(1.1.1.1.csv) a,b,c 43,17104773,3 45,17104234,4 File 2(2.2.2.2.csv) a,b,c 43,17104773,1... (2 Replies)
Discussion started by: as7951
2 Replies

2. Shell Programming and Scripting

How to remove exisiting file content from a file and have to append new file content?

hi all, i had the below script x=`cat input.txt |wc -1` awk 'NR>1 && NR<'$x' ' input.txt > output.txt by using above script i am able to remove the head and tail part from the input file and able to append the output to the output.txt but if i run it for second time the output is... (2 Replies)
Discussion started by: hemanthsaikumar
2 Replies

3. Shell Programming and Scripting

How to grep a log file for words listed in separate text file?

Hello, I want to grep a log ("server.log") for words in a separate file ("white-list.txt") and generate a separate log file containing each line that uses a word from the "white-list.txt" file. Putting that in bullet points: Search through "server.log" for lines that contain any word... (15 Replies)
Discussion started by: nbsparks
15 Replies

4. Shell Programming and Scripting

Sed: replace content from file with the content from file

Hi, I am having trouble while using 'sed' with reading files. Please help. I have 3 files. File A, file B and file C. I want to find content of file B in file A and replace it by content in file C. Thanks a lot!! Here is a sample of my question. e.g. (file A: a.txt; file B: b.txt; file... (3 Replies)
Discussion started by: dirkaulo
3 Replies

5. Shell Programming and Scripting

Compare two string in two separate file and delete some line of file

Hi all i want to write program with shell script that able compare two file content and if one of lines of file have # at the first of string or nothing find same string in one of two file . remove the line in second file that have not the string in first file. for example: file... (2 Replies)
Discussion started by: saleh67
2 Replies

6. Shell Programming and Scripting

Compare large file and identify difference in separate file

I have a very large system generated file containing around 500K rows size 100MB like following HOME|ALICE STREET|3||NEW LISTING HOME|NEWPORT STREET|1||NEW LISTING HOME|KING STREET|5||NEW LISTING HOME|WINSOME AVENUE|4||MODIFICATION CAR|TOYOTA|4||NEW LISTING CAR|FORD|4||NEW... (9 Replies)
Discussion started by: jubaier
9 Replies

7. Shell Programming and Scripting

Separate lines in csv by column content (newbie)

Hello everyone I have a csv file organized just like in the following example: col1,col2,col3,CODE_0, ... , colN col1,col2,col3,CODE_0, ... , colN col1,col2,col3,CODE_1, ... , colN col1,col2,col3,CODE_1, ... , colN col1,col2,col3,CODE_1, ... , colN col1,col2,col3,CODE_2, ... , colN... (7 Replies)
Discussion started by: yomaya
7 Replies

8. Shell Programming and Scripting

How to split a data file into separate files with the file names depending upon a column's value?

Hi, I have a data file xyz.dat similar to the one given below, 2345|98|809||x|969|0 2345|98|809||y|0|537 2345|97|809||x|544|0 2345|97|809||y|0|651 9685|98|809||x|321|0 9685|98|809||y|0|357 9685|98|709||x|687|0 9685|98|709||y|0|234 2315|98|809||x|564|0 2315|98|809||y|0|537... (2 Replies)
Discussion started by: nithins007
2 Replies

9. UNIX for Dummies Questions & Answers

creating separate directories according to file extension and keeping file in different directory as

unix program to which a directory name will be passed as parameter. This directory will contain files with various extensions. This script will create directories with the names of the extention of the files and then put the files in the corresponding folder. All files which do not have any... (2 Replies)
Discussion started by: Deekay.p
2 Replies

10. Shell Programming and Scripting

To read and separate number and words in file and store to two new file using shell

hi, I am a begginer in unix and i want to know how to open a file and read it and separate the numbers & words and storing it in separate files, Using shell scripting. Please help me out for this. Regards S.Kamakshi (2 Replies)
Discussion started by: kamakshi s
2 Replies
Login or Register to Ask a Question