Jika CSV gabungan mengulang tajuk kolomnya di antara batch, Anda dapat membuat Tindakan Cepat Finder yang menyimpan baris pertama dan menghapus baris berikutnya yang sama persis. Tindakan di bawah ini menulis file .cleaned.csv terpisah di samping setiap file yang dipilih, membiarkan file asli tidak tersentuh. Ini berfungsi untuk ekspor CSV biasa di mana setiap rekaman menempati satu baris; ini tidak mengurai setiap format CSV yang valid.
Hal yang akan dilakukan Tindakan Cepat
Alur kerja ini membandingkan baris lengkap, bukan bidang CSV individual. Alur kerja ini menyimpan baris pertama sebagai header, menyalinnya ke output, lalu melewati baris berikutnya yang identik dengan header tersebut. Baris lain tetap dalam urutan aslinya, termasuk baris data yang berulang. Ini adalah pilihan praktis saat batch yang diekspor menyisipkan tajuk yang sama di antara rekaman.
Metode ini menggunakan awk bawaan macOS melalui tindakan Jalankan Skrip Shell (Run Shell Script) di Automator. Apple mendokumentasikan cara membuat Tindakan Cepat Finder dan menambahkan skrip shell ke alur kerja Automator. Membuat alur kerja Tindakan Cepat · Menggunakan tindakan skrip shell dalam alur kerja Automator
Membuat Tindakan Cepat Finder
- Buka Automator, pilih File > Baru, pilih Tindakan Cepat, lalu klik Pilih.
- Di bagian atas alur kerja, atur Alur kerja menerima saat ini ke file atau folder dan atur aplikasi ke Finder.
- Temukan Jalankan Skrip Shell di perpustakaan Tindakan dan seret ke dalam alur kerja.
- Atur Shell ke
/bin/zshdan Teruskan input ke sebagai argumen. Tempel skrip di bawah ini ke dalam tindakan tersebut.
for file in "$@"; do
if [ ! -f "$file" ]; then
printf 'Not a regular file: %s\n' "$file" >&2
exit 1
fi
output="${file}.cleaned.csv"
if [ -e "$output" ]; then
printf 'Output already exists; skipped: %s\n' "$output" >&2
exit 1
fi
temporary=$(mktemp "${file}.tmp.XXXXXX") || exit 1
if awk 'NR == 1 { header = $0; print; next }
$0 != header { print }' "$file" > "$temporary"; then
if ! mv "$temporary" "$output"; then
rm -f "$temporary"
exit 1
fi
else
rm -f "$temporary"
exit 1
fi
done
Simpan alur kerja dengan nama seperti Hapus Header CSV Berulang. File sementara dibuat di samping sumber, lalu dipindahkan ke nama output setelah pemrosesan selesai. Jika output tersebut sudah ada, skrip akan berhenti alih-alih menggantikannya. Input asli tidak pernah dijadikan target penulisan.
Jalankan dan periksa hasilnya
Di Finder, pilih satu atau beberapa file CSV, buka menu kontekstual Tindakan Cepat, dan pilih Hapus Header CSV Berulang. Periksa di samping setiap file sumber apakah ada file yang berakhiran .cleaned.csv. Buka hasilnya di editor teks atau spreadsheet dan periksa apakah file tersebut masih memiliki satu tajuk serta baris sebelum dan sesudah setiap tajuk yang berulang tetap ada. Alur kerja ini tidak menampilkan pesan penyelesaian khusus; file yang tidak dihasilkan mungkin berarti output sudah ada sebelumnya atau terjadi kesalahan pemrosesan.
Perbandingannya bersifat persis: tajuk dengan huruf besar/kecil, spasi, tanda baca, atau tanda kutip yang berbeda akan diperlakukan sebagai baris yang berbeda dan akan tetap dipertahankan. Batasan tersebut disengaja di sini; ini menghindari tebakan baris mana yang dihitung sebagai tajuk ketika teks file bervariasi.
Ketahui kapan metode berbasis baris ini tidak cocok
CSV dapat memuat bidang berkutip dengan karakter baris baru (newline) yang disematkan. Dalam kasus tersebut, rekaman CSV logis dapat mencakup beberapa baris fisik, sedangkan awk memproses input sebagai baris. Skrip ini kemudian dapat salah mengira baris di dalam bidang sebagai rekaman atau merusak file. Manual awk macOS Apple menjelaskan pemrosesan yang berorientasi baris; untuk CSV multi-baris, gunakan alat yang memahami CSV dan mendukung format file tersebut. Manual awk macOS
Tindakan Cepat ini juga tidak menormalkan spasi putih, menghapus kecocokan yang mirip, memeriksa nama kolom, atau menggabungkan file. Ini cocok untuk pembersihan terbatas: menghapus pengulangan persis dari baris fisik pertama dari ekspor CSV berbasis baris sambil mempertahankan file sumber untuk ditinjau.
Sumber
- Membuat alur kerja Tindakan Cepat di Automator pada Mac — Dukungan Apple
- Menggunakan tindakan skrip shell dalam alur kerja Automator pada Mac — Dukungan Apple
- awk(1) — macOS 13.6.5 Manual Pages — Halaman Manual FreeBSD