日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

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

發布時間:2023/12/1 linux 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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就是這樣了)。盡管如此,有興趣的讀者仍然可以通過匹配,之類的關鍵字來達到類似的分割文件的效果,這里就不再贅述了。

總結

以上是生活随笔為你收集整理的linux转换vcf格式,如何使用awk分割vCard通讯录文件(.vcf)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。