Find & Replace identifiers using a conversion table


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Find & Replace identifiers using a conversion table
# 1  
Old 02-22-2012
Find & Replace identifiers using a conversion table

Hi !

I have input.tab with one column containing Item IDs under a number format (the second column is the Location of this item):
Code:
Location     Item ID
rack1           12; 35; 43
rack35         23; 894; 5478; 98
etc...

(The number of Items per row is variable. Item IDs in a same field are separated by ";" followed by a "space" characters.)

I have to convert the Item IDs (only) from a number to a text format, using table.tab conversion table (and by keeping the corresponding Location):
Code:
From     To
12          AAA_alpha
23          ABH_epsilon
35          MKIUY_gamma
43          KOTY_zeta
98          RT_delta
894        POF_psi
5478      NHGEU_rho
etc...

The desired output.tab would be:
Code:
Location     Item ID
rack1           AAA_alpha; MKIUY_gamma; KOTY_zeta
rack35         ABH_epsilon; POF_psi; NHGEU_rho; RT_delta
etc...

A beginning of an idea was:
Code:
# Extract the second column of input.tab
awk '\t'{print $2}'   input.tab > input.temp
# Find ID from input.temp in table.tab
grep -wf input.temp table.tab > output.temp
# Extract the second field of the extracted line from output.temp
awk '\t'{print$2}' output.temp

but after to re-stick everything together in the right order is messy !

(in the final output.tab, the IDs can be separated by a coma "," but it is totally optional)

Thanks in advance for your advices !
# 2  
Old 02-22-2012
Code:
$ while read a b; do sed -i "s/$a/$b/g" 1.txt ; done < 2.txt 
$ cat 1.txt 
Location     Item ID
rack1           AAA_alpha; MKIUY_gamma; KOTY_zeta
rackMKIUY_gamma         ABH_epsilon; POF_psi; NHGEU_rho; RT_delta

# 3  
Old 02-22-2012
Thanks itkamaraj !

I don't understand some points.

- In your command, what do the "a", "b" stand for ?

- What are 1.text and 2.text correspond?

Thanks !
# 4  
Old 02-22-2012
Code:
while read a b; do sed -i "s/$a/$b/g" input.tab ; done < table.tab

take a backup of input.tab and issue the above command.

It will replace your item id's to text format.

what is a and b ?

a - is the first column value in table.tab
b - is the second column value in table.tab

we are reading one by one and changing into the input.tab directly.
# 5  
Old 02-22-2012
When i enter your command:
Code:
while read a b; do sed -i "s/$a/$b/g" input.tab ; done < table.tab

It returns:
Code:
sed: 1: "input.tab": command i expects \ followed by text
sed: 1: "input.tab": command i expects \ followed by text
sed: 1: "input.tab": command i expects \ followed by text
sed: 1: "input.tab": command i expects \ followed by text
sed: 1: "input.tab": command i expects \ followed by text
sed: 1: "input.tab": command i expects \ followed by text
sed: 1: "input.tab": command i expects \ followed by text
sed: 1: "input.tab": command i expects \ followed by text

and the input.tab is not modified !

What is the -i ?
# 6  
Old 02-23-2012
what OS you are using ?

try this.

Code:
 
1) take backup of input.tab file
cp input.tab input.tab.20120223
 
2) To modifiy
while read a b; do sed "s/$a/$b/g" input.tab > output.tab; mv output.tab input.tab; done < table.tab

# 7  
Old 02-23-2012
Yep !

It works great when output and rename the file !

but when I output the file and not rename it,
while read a b; do sed "s/$a/$b/g" input.tab > output.tab; done < table.tab

it converts only one ID:
Code:
Location        Item ID
rackA   12; 35; 43
rackB   23; 894; NHGEU_rho; 98

 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Find & Replace with same case letters

I have text with upper and lower case words. I want to find something and replace it with something new. But it should match the case - Meaning - it should replace old upper cased word with NEW upper case word and lower with lower. example: this text is very simple TEXT. now I want to replace... (5 Replies)
Discussion started by: grep_me
5 Replies

2. UNIX for Dummies Questions & Answers

Find & Replace

Hi I am looking to rename the contents of this dir, each one with a new timestamp, interval of a second for each so it the existing format is on lhs and what I want is to rename each of these to what is on rhs..hopefully it nake sense CDR.20060505.150006.gb CDR.20121211.191500.gb... (3 Replies)
Discussion started by: rob171171
3 Replies

3. Shell Programming and Scripting

Find and replace variables using a csv table

I have a flat file (template) where I want to replace variables based upon a value in another file (csv). The variables in the template are named %VAR_X_z% The values are in the csv file and X is field 0 of each line and y field 1 and up. Example of the csv: Badidas, 13.00, 12.00, 11.00,... (8 Replies)
Discussion started by: biscayne
8 Replies

4. Shell Programming and Scripting

Find & replace --> create a new file

Hi All, I have a unix shell script file as below. My task is a)to replace 248 to 350 and need to create a new file as BW3_350.sh b)to replace 248 to 380 and need to create a new file as BW3_380.sh c)to replace 248 to 320 and need to create a new file as BW3_320.sh there is no... (6 Replies)
Discussion started by: karthi_mrkg
6 Replies

5. UNIX for Dummies Questions & Answers

converting unique identifiers in a column using conversion file

Hello, I often have this problem: I have a file with a column of unique identifiers e.g. file1 below has an id column and data column/columns with p rows: cat data1 dog data2 cow data3 . . . elephant datap-1 horse datap and I have a conversion file,file2, with n<p rows... (4 Replies)
Discussion started by: peanuts48
4 Replies

6. Shell Programming and Scripting

Find & Replace string in multiple files & folders using perl

find . -type f -name "*.sql" -print|xargs perl -i -pe 's/pattern/replaced/g' this is simple logic to find and replace in multiple files & folders Hope this helps. Thanks Zaheer (0 Replies)
Discussion started by: Zaheer.mic
0 Replies

7. UNIX for Dummies Questions & Answers

Find, Replace & Edit a string?

Is this something SED would be used for or can AWK do it? I have a string that I would like to chop bits out of and re-arrange some of the rest. Basically I want to change this: <log4j:event logger="webserver" timestamp="1240110840109" time="Sun Apr 19 04:14:00 BST 2009" level="INFO"... (4 Replies)
Discussion started by: Sepia
4 Replies

8. Shell Programming and Scripting

find & incremental replace?

Looking for a way using sed/awk/perl to replace port numbers in a file with an incrementing number. The original file looks like... Host cmg-iqdrw3p4 LocalForward *:9043 localhost:9043 Host cmg-iqdro3p3a LocalForward *:10000 localhost:10000 Host cmg-iqdro3p3b LocalForward... (2 Replies)
Discussion started by: treadwm
2 Replies

9. UNIX for Dummies Questions & Answers

improving my script (find & replace)

Hi all, I have a script that scan files, find old templet and replace it with new one. #!/bin/ksh file_name=$1 old_templet=$2 new_templet=$3 # Loop through every file like this for file in file_name do cat $file | sed "s/old_templet/new_templet/g" > $file.new #do a global searce and... (8 Replies)
Discussion started by: amir_yosha
8 Replies

10. Shell Programming and Scripting

Find & Replace

I get a text file with 70+ columns (seperated by Tab) and about 10000 rows. The 58th Column is all numbers. But sometimes 58th columns has "/xxx=##" after the numeric data. I want to truncate this string using the script. Any Ideas...:confused: (3 Replies)
Discussion started by: gagansharma
3 Replies
Login or Register to Ask a Question