linux转换vcf格式,如何使用awk分割vCard通讯录文件(.vcf)

写这个的缘由是某人最近要从某旧山寨手机给某(更旧的)NOKIA手机同步通讯录,由于某山寨android手机输出的vCard文件是单文件里面包含多个记录数据的格式,而NOKIA的古老同步软件只支持单记录vcf,所以就要将单个vCard文件分割成多个vcf,然而Y某本来是懒的动脑,在网上找了半天也没找到现成的办法,所以只有自己来分割了,所谓求人不若求己…方法在这里记录备用。

首先要简单了解下vCard文件的结构,旧vCard(2.1开始)是明码,很容易读取,其格式大致如下:

BEGIN:VCARD

VERSION:2.1

N:Ryouko, Asakura

FN:Asakura Ryouko

ORG: Jouhou Tougou Shinentai (JTS)

TEL;WORK:1-604-436-5505

EMAIL:r.asakura@live.com

END:VCARD

BEGIN:VCARD

VERSION:2.1

N:Yuki, Nagato

可以看出这只是由一系列简单的数据域组成的”field:data”结构,每个单独的联系人的数据都保存在”BEGIN:VCARD”和“END:VCARD”中间的部分,所以仅仅需要把这中间的部分单独输出一个文件就好了,很简单吧?这种事情自然要祭出文本处理专用脚本awk了:

awk ‘/BEGIN:VCARD/{name=”split”++i;}{print > name”.vcf”;}’ to_be_split.vcf

即在发现新的BEGIN:VCARD之后,迭代的生成一个“字符+数字”的新文件名,并将BEGIN:VCARD之后的部分输出到该文件名中。

不过,新的vcard似乎采用了xml格式(xcard),因此以上的脚本似乎就不太管用了,我个人是不太喜欢将xml格式运用到数据中的,因为读起来不直观,而且浪费了不少格式上的存储空间(我这种old type就是这样了)。尽管如此,有兴趣的读者仍然可以通过匹配,之类的关键字来达到类似的分割文件的效果,这里就不再赘述了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值