2014-01-18 6 views
1

У меня есть около 3400 контактов из моего клиента в цифрах, как:Bash скрипта для создания визитки

+13424xxxx 
+1434xxxxx 

Я хотел бы использовать Баш скрипт для создания файла с VCard для каждого номера:

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

Возможно ли создать один файл vcard, содержащий эти 3400 контактов?

благодаря

+1

https://www.google.com/search?q=csv+2+vcard+bash Первый результат это с Баш скрипт в конце: HTTP: //web-tech.ga- usa.com/2012/12/outlook-2002-contacts-csv-to-vcard-via-bash/ – DanFromGermany

+0

У вас есть эти числа в виде строк внутри текстового файла? Откуда вы получаете другую информацию (имя клиента и т. Д.)? – PSkocik

+0

@DanFromGermany да, я видел это, но я сожалею, что не работал для меня, как намеренный – Mtaly

ответ

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 ### 

Если у вас есть дополнительные поля данных для работы с тогдашним на Orignal поста, который использует Awk может быть лучше

подходом.

:) 
Dale 
1

Допустим, у вас есть эти номера, сохраненные в файле с именем numbers.txt, один номер в каждой строке.

Затем вы можете сделать (в чистом Баш):

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

т.е. вы экономите каждую строку в $ ЛИНИИ вставив его в статический текст.

Вы можете перенаправить это в файл с помощью> (обрезать цель и записать в нее) или >> (добавить к цели), за которым следует имя, в которое вы хотите записать.

Реально, у вас будет несколько столбцов (а не только цифры, но и имена и другие данные). Pure bash не подходит для этого, и в сценариях bash люди используют вспомогательные утилиты, такие как awk, для анализа текстовых файлов с такими таблицами в них (на другом языке для изучения).

Лично я считаю, что было бы лучше и быстрее адаптировать предлагаемое решение csv или вытолкнуть ваш собственный PHP.

Смежные вопросы