Переписать 3 команды в одну команду или скрипт, который можно запустить на cron - PullRequest
1 голос
/ 24 мая 2011

В настоящее время я использую 3 разные команды для достижения цели: загрузить zip, распаковать его, преобразовать txt файл в utf8 и затем преобразовать csv в json!

Сначала у меня есть:

wget https://www.example.com/example.zip -O temp.zip; unzip -o temp.zip; rm temp.zip

Что хорошо, но проблема для начала в том, как мне переименовать извлекаемый файл, чтобы он оставался неизменным каждый раз для следующих процессов, поскольку каждый день в zip-файле может быть другое имя? Затем я запускаю этот скрипт в зависимости от имени файла, который преобразует ISO в utf8:

sh dir_iconv.sh example1.txt ISO8859-1 UTF-8

Что это за скрипт:

#!/bin/bash

ICONVBIN='/usr/bin/iconv' # path to iconv binary

if [ $# -lt 3 ]
then
echo "$0 dir from_charset to_charset"
exit
fi

for f in $1/*
do
if test -f $f
then
    echo -e "\nConverting $f"
    /bin/mv $f $f.old
    $ICONVBIN -f $2 -t $3 $f.old > $f
    rm -f $f.old
else
    echo -e "\nSkipping $f - not a regular file";
fi
done

И, наконец, я запускаю скрипт ruby ​​csv2json - https://github.com/darwin/csv2json - который вызывается следующим образом (с разделителем канала), чтобы получить вывод json:

csv2json -s '|' example1.txt > example1.json

Есть ли простой способ свернуть это в одну команду или скрипт, который можно вызвать?

1 Ответ

3 голосов
/ 24 мая 2011

Передайте все ваши команды одну за другой и, при необходимости, добавьте их в файл сценария оболочки.

wget -qO- https://www.example.com/example.zip | unzip | iconv -f ISO8859-1 -t UTF-8 | csv2json > example.json
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...