在重复名称上添加双引号 [英] Add double quotation on duplicated name

查看:176
本文介绍了在重复名称上添加双引号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


$ b

file:



我想从下面的文件中找到重复的名称,并用标记它们。

  James Miki:123-456-7890 
Wang Tai:234-563-6879
James Miki:123-456-7890

输出看起来像:

 James Miki:123-456-7890 

谢谢。

解决方案

试试这个 -

  cat f 
James Miki:123-456-7890
Wang Tai:234-563-6879
James Miki:123-456-7890
James Miki:456-456-8888 ###添加测试用例
Wang Tai:234-563-6879 ###为测试用例添加
Vipin Kumar:878-432-2345 ###为测试用例添加
Vipin Kumar:878 -432-2345 ###为测试用例添加

awk -F':''{gsub(/ /,,$ 2)} {b [$ 1FS $ 2] ++} END {对于(k in b)if(b [k]> 1){split(k,u,:); print v,u [1],v FS u [2]}}'v =''OFS =f
Vipin Kumar:878-432-2345
王太: 234-563-6879
James Miki:123-456-7890

解释 -

  gsub(/ /,,$ 2):从第二列删除空格
b [$ 1FS $ 2] + +:创建数组b并存储col1和2
if(b [k]> 1):检查重复记录
split(k,u,:):将存储的值拆分为k组合col1和2),这样我们就可以在第一列添加双引号。


I want to find duplicated name from the file like below and marked them with "".

file:

James Miki:123-456-7890
Wang Tai:  234-563-6879
James Miki: 123-456-7890

Output wants to look like:

"James Miki": 123-456-7890

Thank you.

解决方案

Try this -

cat f
James Miki:123-456-7890
Wang Tai: 234-563-6879
James Miki: 123-456-7890
James Miki: 456-456-8888     ### added for test case
Wang Tai: 234-563-6879       ### added for test case
Vipin Kumar : 878-432-2345   ### added for test case
Vipin Kumar : 878-432-2345   ### added for test case

awk -F':' '{gsub(/ /,"",$2)}{b[$1FS$2]++} END {for(k in b) if(b[k]>1) {split(k,u,":"); print v,u[1],v FS u[2]}}' v='"' OFS=""  f
"Vipin Kumar ":878-432-2345
"Wang Tai":234-563-6879
"James Miki":123-456-7890

Explained -

gsub(/ /,"",$2): Remove space from 2nd column
b[$1FS$2]++    : Create array b and store col1 and 2 
if(b[k]>1)     : Check duplicate record
split(k,u,":") : split the stored value in k (combination of col1 and 2) so that we can add double quote on first column.

这篇关于在重复名称上添加双引号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆