Skip to content

Instantly share code, notes, and snippets.

@faizalanwar
Last active February 4, 2024 13:36
Show Gist options
  • Select an option

  • Save faizalanwar/603eb5c4709353fa664d0fa4a2ff725a to your computer and use it in GitHub Desktop.

Select an option

Save faizalanwar/603eb5c4709353fa664d0fa4a2ff725a to your computer and use it in GitHub Desktop.
Pemisahan File CSV Berdasarkan Jumlah Baris dengan Bash
#!/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
@faizalanwar
Copy link
Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment