在重复名称上添加双引号 [英] Add double quotation on duplicated name
本文介绍了在重复名称上添加双引号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
$ 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屋!
查看全文