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)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 重庆看无精子症最好的医院推荐
- 下一篇: linux下jboss分析hellowo