Partial Match and Replace


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Partial Match and Replace
# 1  
Old 12-08-2016
Partial Match and Replace

Hi, I have a tab delimited text file like this one. I need to do a partial match of a particular cell and then replace matches with an empty cell. So here is a sample:

Code:
Smith	FordMustang	ChevroletCamaro
Miller	FordFiesta
Jones	KiaSorrento
Davis	ChevroletCamaro
Johnson	ToyotaHighlander

I need to do a partial match within "makemodel" and replace with noting. For example search "Ford" and replace these partial matching cells with nothing

Code:
Smith		ChevroletCamaro
Miller	
Jones	KiaSorrento
Davis	ChevroletCamaro
Johnson	ToyotaHighlander


Last edited by Don Cragun; 12-09-2016 at 04:06 AM.. Reason: Add CODE tags.
# 2  
Old 12-08-2016
as a start....
Code:
MATCH=Ford
sed -r -e "s/$MATCH[^[:space:]]+//g" file.txt

# 3  
Old 12-08-2016
This works. But on my real dataset, I still have a problem.

The problem is that I need

Code:
sed -E -e "s/ord[^[:space:]]+//g" file.txt

With "ord" to work, too. So it needs to be "wild carded" at the beginning of the word to work, too.

In my "real" dataset, my column has something more like this to be flagged whenever there is Ford

Code:
1998 Ford Mustang
1996 Ford Festiva

---------- Post updated at 07:19 PM ---------- Previous update was at 07:15 PM ----------

And when I use this

Code:
sed -E -e "s/.*ord[^[:space:]]+//g" file.txt

It deletes EVERYTHING before Ford. I only need that particular column cell replaced.

Last edited by Don Cragun; 12-09-2016 at 04:08 AM.. Reason: Add CODE and ICODE tags, again.
# 4  
Old 12-09-2016
Hi,

you can try the following:
Code:
sed -e 's/ Ford[a-zA-z]+//g' file

g is added for global replacement for given input in post #1 g is not required.

or

Code:
awk '{for (i=1;i<=NF;i++) { if ($i ~ /Ford/) $i =x; } }1' file

If it does not help, please post your input and desired output.
# 5  
Old 12-09-2016
Try:
Code:
del=Ford; sed "s/[^[:blank:]]*${del}[^[:blank:]]*//g" infile

or
Code:
awk -v del="Ford" '{for (i=1;i<=NF;i++) if($i~del) $i=x}1' FS='\t' OFS='\t' infile

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Rename file using partial match to another

In the below I am trying to rename the contents within each data subfolder in a specific run, based on a partial match of the IonCode_0000_ in each file in the data subdirectory to $1 in f1. There will be multiple runs in f1 but each run in $uniq is unique and will be found in f1 and the rename... (27 Replies)
Discussion started by: cmccabe
27 Replies

2. Shell Programming and Scripting

awk to update file based on partial match in field1 and exact match in field2

I am trying to create a cronjob that will run on startup that will look at a list.txt file to see if there is a later version of a database using database.txt as the source. The matching lines are written to output. $1 in database.txt will be in list.txt as a partial match. $2 of database.txt... (2 Replies)
Discussion started by: cmccabe
2 Replies

3. Shell Programming and Scripting

awk unique count of partial match with semi-colon

Trying to get the unique count of the below input, but if the text in beginning of $5 is a partial match to another line in the file then it is not unique. awk awk '!seen++ {n++} END {print n}' input 7 input chr1 159174749 159174770 chr1:159174749-159174770 ACKR1 chr1 ... (2 Replies)
Discussion started by: cmccabe
2 Replies

4. Shell Programming and Scripting

awk partial string match and add specific fields

Trying to combine strings that are a partial match to another in $1 (usually below it). If a match is found than the $2 value is added to the $2 value of the match and the $3 value is added to the $3 value of the match. I am not sure how to do this and need some expert help. Thank you :). file ... (2 Replies)
Discussion started by: cmccabe
2 Replies

5. Shell Programming and Scripting

Match partial text

I posted the incorrect files yesterday and apologize. I also modified the awk script but with no luck. There are two text files in the zip (name.txt and output.txt). I am trying to match $2 in name.txt with $1 in output.txt and if they match then $1 of name.txt is copied to $7 of output.txt. ... (7 Replies)
Discussion started by: cmccabe
7 Replies

6. UNIX for Dummies Questions & Answers

How to substitute for the partial match?

Hi I have a question and hope I can get answer here. Thank you in advance. I have two files: file1: aa X bb Y cc Z file2: cc A bb B dd C aa D bb E If the 1st column match in both file1 and file2, the 2nd column in file2 will be replaced by the 2nd column in file1. If there is no... (2 Replies)
Discussion started by: yuejian
2 Replies

7. UNIX for Dummies Questions & Answers

Partial match in two files then substitute

Hi, I was trying to figure this out but failed so I hope someone here can help me, thank you in advance. I have two files. file1: aa M bb N cc O dd P ee Q file2: aa A_87_P254063 cc A_87_P016532 bb A_87_P104793 dd A_87_P055331 ee A_87_P059706 aa A_87_P071636 ee A_87_P028302... (2 Replies)
Discussion started by: yuejian
2 Replies

8. Shell Programming and Scripting

Using grep returns partial matches, I need to get an exact match or nothing

I’m trying to modify someone perl script to fix a bug. The piece of code checks that the zone name you want to add is unique. However, when the code runs, it finds a partial match using grep, and decides it already exists, so the “create” command exits. $cstatus = `${ZADM} list -vic | grep... (3 Replies)
Discussion started by: TKD
3 Replies

9. UNIX for Dummies Questions & Answers

Compare 2 lists using a full and/or partial match at beginning of line?

hello all, I wonder if anybody might be able to help with this. I have file 1 and file2. Both files may contain thousands of lines that have variable contents. file1 234GH 5234BTW 89er 678tfg 234 234YT tfg456 wert 78gt gh23444 (7 Replies)
Discussion started by: Garrred
7 Replies

10. Shell Programming and Scripting

awk partial match and filter records

Hi, I am having file which contains around 15 columns, i need to fetch column 3,12,14 based on the condition that column 3 starts with 40464 this is the sample data how to achieve that (3 Replies)
Discussion started by: aemunathan
3 Replies
Login or Register to Ask a Question