简体   繁体   中英

To Replace Numerical Values in a certain column with other Numerical Values

I have data as below:

83997000|17561815|20370101000000 83997000|3585618|20370101000000 
83941746|13898890|20361231230000 83940169|13842974|20171124205011 
83999444|3585618|20370101000000 83943970|10560874|20370101000000 
83942000|13898890|20371232230000 83999333|3585618|20350101120000

Now, what I want to achieve is as below:

If column 2 is 17561815 , print 22220 to replace 17561815 .

If column 2 is 3585618 , print 23330 to replace 3585618 .

If column 2 is 13898890 , print 24440 to replace 13898890 .

If column 2 is 13842974 , print 25550 to replace 13842974 .

If column 2 is 3585618 , print 26660 to replace 3585618 .

If column 2 is 10560874 , print 27770 to replace 10560874 .

Output to be like this:

83997000|22220|20370101000000 83997000|23330|20370101000000 
83941746|24440|20361231230000 83940169|25550|20171124205011 
83999444|26660|20370101000000 83943970|27770|20370101000000 
83942000|24440|20371232230000 83999333|26660|20350101120000

awk solution:

awk 'BEGIN{ 
         FS=OFS="|"; 
         a["17561815"]=22220; a["13898890"]=24440; 
         a["3585618"]=26660; a["13842974"]=25550; 
         a["10560874"]=27770 
     }
     $2 in a{ $2=a[$2] }
     $4 in a{ $4=a[$4] }1' file

The output:

83997000|22220|20370101000000 83997000|26660|20370101000000 
83941746|24440|20361231230000 83940169|25550|20171124205011 
83999444|26660|20370101000000 83943970|27770|20370101000000 
83942000|24440|20371232230000 83999333|26660|20350101120000

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM