Разделите столбец csv по дате и сохраните в другой папке - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть CSV-файл, подобный этому.

budget.csv

id,date,budget
1,2019/11/01,100
1,2019/11/02,300
1,2019/11/03,200
2,2019/11/01,600
2,2019/11/02,500
2,2019/11/03,400

Как разделить файл CSV по дате и сохранить его в разных местах, которых еще не было? Структура вывода, которую я хочу, выглядит следующим образом.

./2020/11/01/budget.csv
./2020/11/02/budget.csv
./2020/11/03/budget.csv

Я пробовал что-то вроде awk -F'[,]' '{print >> "./2020/11/01/'$2'.csv"}' budget.csv, но мне нужно исправить для создания новых папок и как-то разделить дату. Какие-либо предложения? Я работаю на Ma c OS.

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

Не могли бы вы попробовать следующее:

while IFS="," read -r id date budget; do
    if ((nr++)); then                   # skip the header line
        mkdir -p "$date"                # mkdir recursively
        echo "$id,$date,$budget" >> "$date/budget.csv"
    fi
done < budget.csv
0 голосов
/ 02 апреля 2020

С GNU awk для обработки нескольких выходных файлов:

tail +2 budget.csv | cut -d, -f2 | sort -u | xargs mkdir -p
awk -F, 'NR>1{print > ($2 "/" FILENAME)} budget.csv

С другими awk-ами вам придется закрывать () выходные файлы, как go.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...