我有以下数据:

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


现在,我要实现的目标如下:

如果第2列是17561815,请打印22220替换17561815

如果第2列是3585618,请打印23330替换3585618

如果第2列是13898890,请打印24440替换13898890

如果第2列是13842974,请打印25550替换13842974

如果第2列是3585618,请打印26660替换3585618

如果第2列是10560874,请打印27770替换10560874

输出是这样的:

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解决方案:

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


输出:

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

关于linux - 用其他数值替换特定列中的数值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48214748/

10-15 12:07
查看更多