Last active
February 4, 2024 13:36
-
-
Save faizalanwar/603eb5c4709353fa664d0fa4a2ff725a to your computer and use it in GitHub Desktop.
Pemisahan File CSV Berdasarkan Jumlah Baris dengan Bash
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| futuristic_ascii_art=" | |
| __ _ | |
| ____ / _| | | | |
| / __ \| |_ ___| | __ _ _ ____ ___ __ | |
| / / _' | _|_ | |/ _' | '_ \ \ /\ / | '__| | |
| | | (_| | | / /| | (_| | | | \ V V /| | | |
| \ \__,_|_| /___|_|\__,_|_| |_|\_/\_/ |_| | |
| \____/ | |
| " | |
| process_csv_files() { | |
| clear | |
| echo -e "\e[1;36m$futuristic_ascii_art\e[0m" | |
| csv_files=( *.csv ) | |
| if [ "${#csv_files[@]}" -eq 0 ]; then | |
| echo "Tidak ada file CSV dalam folder ini." >&2 | |
| return | |
| fi | |
| echo -e "\e[5;35mPilih File CSV yang akan di split per 500kb\e[0m" | |
| select file in "${csv_files[@]}"; do | |
| echo -e "\n\e[mProcessing...\e[0m" | |
| if [ -n "$file" ]; then | |
| input_csv="$file" | |
| file_name=$(basename "$input_csv" .csv) | |
| header=$(head -n 1 "$input_csv") | |
| total_rows=$(wc -l < "$input_csv") | |
| iteration_limit=14000 | |
| output_dir="$file_name/" | |
| mkdir -p "$output_dir" | |
| for ((i=0; i<=total_rows; i+=iteration_limit)); do | |
| start_row=$((i + 1)) | |
| end_row=$((start_row + iteration_limit - 1)) | |
| output_file="${file_name} (${start_row}-${end_row}).csv" | |
| sed -n "${start_row},${end_row}p" "$input_csv" > "$output_dir/$output_file" | |
| done | |
| for file in "$output_dir/$file_name"*.csv; do | |
| awk -v header="$header" 'NR==1{print header} FNR>1' "$file" > temp && mv temp "$file" | |
| done | |
| echo -e "\e[1;32m> Proses Splitting Berhasil...\e\n[0m" | |
| read -rp "Tekan [Enter] untuk melanjutkan..." | |
| process_csv_files | |
| else | |
| echo -e "\e[1;31m> Pilihan tidak valid. Silakan pilih lagi.\e\n[0m" | |
| read -rp "Tekan [Enter] untuk melanjutkan..." | |
| process_csv_files | |
| fi | |
| done | |
| } | |
| while true; do | |
| process_csv_files | |
| # Tambahkan opsi menu atau fungsionalitas tambahan sesuai kebutuhan | |
| done |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
DATA EXCEL HARUS DI CEK DULU
JUMLAH HARUS 16 DIGIT NIK NYA
tidak perlu ; atau ,
di sort aja dulu excel nik nya yg penting 16 digit