я соединял этот скрипт, чтобы сделать две вещи:Взорвать к массиву
- Изменить разделители в файле данных («::» к «» в данном случае)
- Выбрать столбцы и Я хочу и добавить их в новый файл
Это работает, но я хочу, чтобы это было лучше. Я специально хочу найти альтернативный метод для взрыва каждой строки в массив. Использование аргументов командной строки не похоже на путь. ЛЮБЫЕ КОММЕНТАРИИ ПРИВЕТСТВУЮТ.
# Takes :: separated file as 1st parameters
SOURCE=$1
# create csv target file
TARGET=${SOURCE/dat/csv}
touch $TARGET
echo #userId,itemId > $TARGET
IFS=","
while read LINE
do
# Replaces all matches of :: with a ,
CSV_LINE=${LINE//::/,}
set -- $CSV_LINE
echo "$1,$2" >> $TARGET
done < $SOURCE
Должен быть лучший заголовок - пожалуйста, обновите свой заголовок, чтобы он был уместен. (-1 в настоящее время по указанной причине, но это может быть легко изменено позже.) –
Поместите перенаправление в '$ TARGET' за пределы цикла, возможно, как'> $ TARGET'. Затем вы можете потерять «прикосновение» перед циклом. В строке заголовка должны быть указаны кавычки ('echo '# userID, itemId" '). –