File manipulation


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting File manipulation
# 1  
Old 01-13-2009
Question File manipulation

Here is the sample input file:

6A subject1 Bldg1
6A subject1 Bldg2 Yes
6A subject1 Bldg3
8D subject2 Bldg1
8D subject2 Bldg2
8D subject2 Bldg3 Yes
E4 subject3 Bldg1
E4 subject3 Bldg2
E4 subject3 Bldg3
4F subject4 Bldg1
4F subject4 Bldg2
4F subject4 Bldg3 Yes
9F subject5 Bldg1 Yes
9F subject5 Bldg2
9F subject5 Bldg3 Yes
32 subject6 Bldg1
32 subject6 Bldg2

From this, I want two output files:

1. The entries that has "Yes" (only the first three fields.)

The output must look like this:

6A subject1 Bldg2
8D subject2 Bldg3
4F subject4 Bldg3
9F subject5 Bldg1
9F subject5 Bldg3

This will be straight forward, I think.

2. I want the entries where none of the field1 of the "yes" entries exist (and just column 1 and 2.)

The output must look like this:

E4 subject3
32 subject6

(All entries with 6A, 8D, 4F, 9F will get deleted as they have at least one "yes")

How to do this using a shell script?

Thanks,
Ajay
# 2  
Old 01-13-2009
What have you tried so far?

This looks like school work. NO?
# 3  
Old 01-13-2009
No, the data is a sample only, but that is what I am trying to achieve.

I could do the first one with no problem (as it is straight forward) and played around with awk, sed, etc, with no success with the second part.
# 4  
Old 01-14-2009
I'm sure this can be done with a one-liner, but this one works, not really performance optimized and a lot of temp files

put your input in input.txt

Code:
cp input.txt list.txt
grep Yes list.txt | tee yes.txt | while read ONE TWO THREE
                                        do grep -v $TWO list.txt > list1.txt
                                        cp list1.txt list.txt
                                done

cat list.txt >> yes.txt
awk '{ $NF ="";print}' yes.txt | uniq
rm list.txt yes.txt list1.txt


Last edited by funksen; 01-14-2009 at 09:33 AM..
# 5  
Old 01-14-2009
Code:
awk '/Yes/ { print $1, $2, $3 > "yesfile"; ++x[$1]; next }
!x[$1] { print $1, $2 > "nofile" }' "$INPUTFILE"

# 6  
Old 01-14-2009
Quote:
Originally Posted by cfajohnson
Code:
awk '/Yes/ { print $1, $2, $3 > "yesfile"; ++x[$1]; next }
!x[$1] { print $1, $2 > "nofile" }' "$INPUTFILE"



nofile produces the wrong output

Code:
6A subject1
8D subject2
8D subject2
E4 subject3
E4 subject3
E4 subject3
4F subject4
4F subject4
32 subject6
32 subject6

in my case, input as mentioned in first post
# 7  
Old 01-14-2009
Code:
awk '/Yes/ { print $1, $2, $3 > "yesfile"; ++x[$1]; next }
!x[$1]++ {print $1, $2 }' "$FILE"

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Populating File data with custom manipulation on file names

Hi, I am confused how to proceed firther please find the problem below: Input Files: DCIA_GEOG_DATA_OCEAN.TXT DCIA_GEOG_DATA_MCRO.TXT DCIA_GEOG_DATA_CVAS.TXT DCIA_GEOG_DATA_MCR.TXT Output File Name: MMA_RFC_GEOG_NAM_DIM_LOD.txt Sample Record(DCIA_GEOG_DATA_OCEAN.TXT):(Layout same for... (4 Replies)
Discussion started by: Arun Mishra
4 Replies

2. Shell Programming and Scripting

Awk to convert a text file to CSV file with some string manipulation

Hi , I have a simple text file with contents as below: 12345678900 971,76 4234560890 22345678900 5971,72 5234560990 32345678900 71,12 6234560190 the new csv-file should be like: Column1;Column2;Column3;Column4;Column5 123456;78900;971,76;423456;0890... (9 Replies)
Discussion started by: FreddyDaKing
9 Replies

3. UNIX for Dummies Questions & Answers

Filtering records from 1 file based on some manipulation doen on second file

Hi, I am looking for an awk script which should help me to meet the following requirement: File1 has records in following format INF: FAILEd RECORD AB1234 INF: FAILEd RECORD PQ1145 INF: FAILEd RECORD AB3215 INF: FAILEd RECORD AB6114 ............................ (2 Replies)
Discussion started by: mintu41
2 Replies

4. Shell Programming and Scripting

value in file - manipulation

Hi Forum. I have the following 2 files: edw_mf_bypass_msg.txt and EDW_server.cfg. edw_mf_bypass_msg.txt - File#1 contains the following text To EDW Support: This is an automatic email sent from var_hostname. Please note that the Mutual Fund load did not run today due to previous... (2 Replies)
Discussion started by: pchang
2 Replies

5. Shell Programming and Scripting

File manipulation

Legends, Please help me to get the following I have a file abc.txt with the following contents 12 13 14 15 And, i want to get the output to a variable like below 12,13,14,15 .... How do i do this? Regards, san Please use code tags when posting data and code samples! (5 Replies)
Discussion started by: sdosanjh
5 Replies

6. UNIX for Dummies Questions & Answers

file manipulation help please

Hi there, I've trawled all over the web for help, and although seen some examples of what i want to do, I cannot seem to get it to work. I need to have this as a script. If anyone can help, I would like to do the following: I have 2 files, File A and File B. I would like to keep file A but... (5 Replies)
Discussion started by: lazerlyte
5 Replies

7. Shell Programming and Scripting

File Manipulation

Hi, i have a file with fixed record length with the following content (only one sentence) 12345678901234567890123456789012345678901234567890 12345678 87654321 hugo meyer friedhofpaul the numbers above are only the column-positions and not part of the file! Now i want... (2 Replies)
Discussion started by: FranzB
2 Replies

8. Shell Programming and Scripting

Help with file manipulation

I need help manipulating text in a file. I am wanting to know a way to shell (ksh)script-edit a file by having a script that searches for a specific string, and then input lines of text in the file before that specific string, without deleting any of the other text in the file. I got this... (2 Replies)
Discussion started by: LinuxRacr
2 Replies

9. Shell Programming and Scripting

file manipulation best way ?

Hi , i would convert the following file V M BOURSE EMPLOI mail/mail-03/dfr-dc.nsf V M DelSpam mail/mail-04/celine_bet.nsf like that : mail/mail-03/dfr-dc.nsf;BOURSE EMPLOI mail/mail-20/celine_bet.nsf;DelSpam the second field ( ex:... (2 Replies)
Discussion started by: Nicol
2 Replies

10. Programming

need help with file manipulation

I've been able to open and write data to files but I need to know how to search a file for a hex string and replace it. (2 Replies)
Discussion started by: angelfly
2 Replies
Login or Register to Ask a Question