Find and replace a column that has '' to NULL in a comma delimited using awk or sed


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Find and replace a column that has '' to NULL in a comma delimited using awk or sed
# 1  
Old 05-13-2010
Find and replace a column that has '' to NULL in a comma delimited using awk or sed

Hi this is my first time posting ever. I'm relatively new in using AWK/SED, I've been trying many a solution. I'm trying to replace the 59th column in a file where if I encounter '' then I would like to replace it with the word NULL.

example

0 , '' , '' , 0 , 195.538462

change it to

0 , NULL , '' , 0, 195.538462

Any ideas Cheers

Last edited by gumal901; 05-13-2010 at 04:05 PM..
# 2  
Old 05-13-2010
for your example here:

Code:
#  nawk -F, '{$2="\""?"NULL":$2;print}' OFS="," infile
0 ,NULL, '' , 0 , 195.538462

for 59th column:

Code:
#  nawk -F, '{$59="\""?"NULL":$59;print}' OFS="," infile

HTH
# 3  
Old 05-13-2010
Thanks it worked but I had other values in that column it was only if it encountered '' that it had to be changed to NULL my apologies for that
# 4  
Old 05-13-2010
MySQL

You can try this Smilie

Code:
#!/bin/bash
#goal is the change value in column 59 if equal ''
oIFS=$IFS
cp mydata mydatatmp
IFS=' , '
while read char
     do
       changecharacter=$( (echo "$char" | tr -d , | awk {'print $59'}) )

        if [ $changecharacter = "''" ]
            then
                changelineport=$( (cut -d , -f1-59 mydata) )
                newlineport=$( (cut -d , -f1-58 mydata) )
                sed -i "s/$changelineport/$newlineport, NULL /" mydata
        fi
     done < mydatatmp
cat mydata
rm mydatatmp
IFS=$oIFS

# 5  
Old 05-13-2010
Hello, gumal901, and welcome to the forums.

There is whitespace around the single quotes to be replaced, in the sample data. Since the problem statement does not specify that the whitespace should be removed, the following code matches a field that contains two consecutive single-quotes with optional leading and trailing whitespace. When the quotes are replaced with "NULL", the whitespace is left intact.

Code:
awk -F, '$59 ~ /^[[:blank:]]*'"''"'[[:blank:]]*$/ {sub(/'"''"'/,"NULL", $59)}; {print}' OFS=, file

Regards,
Alister

---------- Post updated at 04:54 PM ---------- Previous update was at 04:51 PM ----------

Quote:
Originally Posted by Tytalus
Code:
#  nawk -F, '{$59="\""?"NULL":$59;print}' OFS="," infile

That code will always replace the value of $59 with "NULL", which I doubt is what was intended.
# 6  
Old 05-14-2010
Thanks Ygemici and Alister, I did not mention it however I did require the whitespace to stay intact and it did work perfectly. Thanks again.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Replace a column in tab delimited file with column in other tab delimited file,based on match

Hello Everyone.. I want to replace the retail col from FileI with cstp1 col from FileP if the strpno matches in both files FileP.txt ... (2 Replies)
Discussion started by: YogeshG
2 Replies

2. UNIX for Dummies Questions & Answers

Check for not null column in a pipe delimited file

Hi, I have a requirement where I have to check whether the mandatory columns in a pipe delimited file is null and print error message. For eg, I have to check if the 3rd,5th,6th,7th and 8th column are null and print the message "<column name> is null". The data file will have aroung 100,000... (6 Replies)
Discussion started by: reshma15193
6 Replies

3. Shell Programming and Scripting

Replace pipe delimited column string to null

Hi All, I have a large dat file where each lines are pipe delimited values. I need to parse the file depending on the request. For example: sometimes I have told to remove all the values in the 7th column (this case remove values '3333' only from the first line and '3543' from the second line)... (4 Replies)
Discussion started by: express14
4 Replies

4. Shell Programming and Scripting

Find for line with not null values at nth place in pipe delimited file

Hi, I am trying to find the lines in a pipe delimited file where 11th column has not null values. Any help is appreciated. Need help asap please. thanks in advance. (3 Replies)
Discussion started by: manikms
3 Replies

5. Shell Programming and Scripting

Count number of column in a comma delimited file

I have a comma (,) delimited file. 106232145,"medicare","medicare,medicaid",789 I would like to count the number of fields in each line. I tried the below code awk -F ',' '{print NF-1}' This returns me the result as 5 instead of 4. This is because the awk takes... (9 Replies)
Discussion started by: machomaddy
9 Replies

6. Shell Programming and Scripting

Find in first column and replace the line with Awk, and output new file

Find in first column and replace the line with Awk, and output new file File1.txt"2011-11-02","Georgia","Atlanta","x","","" "2011-11-03","California","Los Angeles","x","","" "2011-11-04","Georgia","Atlanta","x","x","x" "2011-11-05","Georgia","Atlanta","x","x","" ... (4 Replies)
Discussion started by: charles33
4 Replies

7. Shell Programming and Scripting

Replace last row of a column in bash/awk/sed

Hi, I've got a file with 3 columns which ends like this: ... 1234 345 1400 5287 733 1400 8472 874 1400 9317 726 1400 I want to replace the last row of the last column with the value 0. So my new file will end: ... 1234 345 1400 5287 733 1400 8472 874 1400 9317 726 ... (5 Replies)
Discussion started by: jhunter87
5 Replies

8. Shell Programming and Scripting

Need an awk for a global find/replace in a file, specific column

I am new to unix and awk/sed etc... using C-Shell. Basically, I have a fixed length file that has 4 different record types on it, H, D, V, W all in column 1. I need to change all the W's in column 1 to D's. in the entire file. The W's can be anywhere in the file and must remain in the same... (3 Replies)
Discussion started by: jclanc8
3 Replies

9. UNIX for Dummies Questions & Answers

Trim String in 3rd Column in Tab Delimited File...SED/PERL/AWK?

Hey Everybody, I am having much trouble figuring this out, as I am not really a programmer..:mad: Datafile.txt Column0 Column1 Column2 ABC DEF xxxGHI I am running using WGET on a cronjob to grab a datafile, but I need to cut the first three characters from... (6 Replies)
Discussion started by: rickdini
6 Replies

10. Shell Programming and Scripting

awk/sed column replace using column header - help

$ cat log.txt Name Age Sex Lcation nfld alias xsd CC 25 M XYZ asx KK Y BB 21 F XAS awe SS N SD 21 M AQW rty SD A How can I replace the column with header "Lcation" with the column with header "alias" and delete the "alias" column? so that the final output will become: Name Age Sex... (10 Replies)
Discussion started by: jkl_jkl
10 Replies
Login or Register to Ask a Question