【问题标题】:Bash script to generate Vcard用于生成 Vcard 的 Bash 脚本
【发布时间】:2014-01-18 16:06:05
【问题描述】:

我有大约 3400 个来自我的客户的联系人,数字如下:

+13424xxxx
+1434xxxxx

我想使用 bash 脚本为每个数字生成一个带有 vcard 的文件:

BEGIN:VCARD
VERSION:3.0
FN:customer name
N:Name;;;;
TEL;TYPE=CELL:+13242XXXX
END:VCARD

是否可以生成一个包含这 3400 个联系人的 vcard 文件?

谢谢

【问题讨论】:

  • google.com/search?q=csv+2+vcard+bash 第一个结果是最后有一个 bash 脚本:web-tech.ga-usa.com/2012/12/…
  • 您将这些数字作为文本文件中的行?您从哪里获得其他信息(客户名称等)?
  • @DanFromGermany 是的,我看到了,但很抱歉没有按预期为我工作
  • @ThorX89 它们在 MySQL 数据库中,我可以使用 php 代码设置最大执行时间 = 0 来生成它们,但我认为 bash 会更快更容易,但我是 Bash Scripting 的新手。
  • @DanFromGermany,谢谢伙计,我修改了您链接的 bash 脚本,是的,它现在可以工作了 :)

标签: bash vcf-vcard


【解决方案1】:

听起来你有一个解决方案 - 我写了外部帖子 - 这真的是专门用于使用多个数据点处理 Outlook CSV 到 Vcard。

当前查询的简单方法:

### snip - start of script - remove this line ###
#!/bin/bash
# use a 'here document' to create the Vcard format
## add/remove Vcard fields between the 'EOM' start/end marks
function create_vcard {
cat << EOM
BEGIN:VCARD
VERSION:3.0
FN:customer name
N:Name;;;;
TEL;TYPE=CELL:${CELL_NUMBER}
END:VCARD
EOM
}
###

IN_FILE=$1
## if IN_FILE missing show usage
if [[ "${IN_FILE}" == "" ]] ; then printf "\n\tUsage: $0 Input_file_name\n\n" ; exit 1 ; fi

OUT=${IN_FILE}.vcard
## if OUT already exists then rename
if [[ -e ${OUT} ]] ; then mv ${OUT} ${OUT}.last ; fi

for CELL_NUMBER in $(cat ${IN_FILE})
do
    create_vcard >> ${OUT}
done
ls -l ${OUT}
### snip - end of script ###

如果你有更多的数据字段可以使用,那么使用 Awk 的原始帖子可能会更好

接近。

:)
Dale

【讨论】:

    【解决方案2】:

    假设您将这些数字存储在一个名为 numbers.txt 的文件中,每行一个数字。

    然后你可以(在纯 bash 中):

    cat numbers.txt| while read LINE; do echo -e "BEGIN:VCARD...CEL:$LINE\nEND:VCARD"; done
    

    也就是说,您将每一行保存到 $LINE 中,并将其粘贴到静态文本中。

    您可以将其重定向到带有 >(截断目标并写入其中)或 >>(附加到目标)后跟您要写入的名称的文件。

    实际上,您会有多个列(不仅是数字,还有名称和其他数据)。 纯 bash 并不擅长这一点,在 bash 脚本中,人们使用辅助实用程序(如 awk)来解析带有此类表的文本文件(另一种需要学习的语言)。

    就个人而言,我认为您最好更快地适应提供的 csv 解决方案,或者使用 PHP 开发自己的解决方案。

    【讨论】:

      猜你喜欢
      • 2012-08-22
      • 2013-12-20
      • 2016-08-24
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 2013-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多