我的客户中有大约3400个联系人,例如:
+13424xxxx
+1434xxxxx
我想使用bash脚本为每个数字生成一个带有vcard的文件:
BEGIN:VCARD
VERSION:3.0
FN:customer name
N:Name;;;;
TEL;TYPE=CELL:+13242XXXX
END:VCARD
是否可以生成一个包含3400个联系人的vcard文件?
感谢
答案 0 :(得分:2)
听起来你有一个解决方案 - 我编写了外部帖子 - 这对于使用多个数据点处理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的orignal帖子可能会更好
方法
:)
Dale
答案 1 :(得分:1)
假设您将这些数字存储在名为numbers.txt
的文件中,每行一个数字。
然后你可以做(纯粹的bash):
cat numbers.txt| while read LINE; do echo -e "BEGIN:VCARD...CEL:$LINE\nEND:VCARD"; done
即,您将每行保存到$ LINE中,将其粘贴到静态文本中。
您可以将其重定向到包含&gt;的文件(截断目标并写入其中)或&gt;&gt; (附加到目标)后跟您要写入的名称。
实际上,你有多个列(不只是数字,还有名称和其他数据)。 纯粹的bash并不擅长,在bash脚本中,人们使用诸如awk之类的辅助工具来解析其中包含这些表的文本文件(另一种语言要学习)。
就我个人而言,我认为您可以更好,更快地调整所提供的csv解决方案,或者使用PHP来推销自己的解决方案。