यदि किसी संयुक्त CSV में बैचों के बीच इसके कॉलम हेडिंग दोहराए जाते हैं, तो आप एक Finder Quick Action बना सकते हैं जो पहली पंक्ति को रखता है और उसके बाद आने वाली पंक्तियों को हटा देता है जो उससे पूरी तरह मेल खाती हैं। नीचे दिया गया एक्शन प्रत्येक चयनित फ़ाइल के बगल में एक अलग .cleaned.csv फ़ाइल लिखता है, जिससे मूल फ़ाइल अछूती रहती है। यह सामान्य CSV एक्सपोर्ट के लिए काम करता है जहां प्रत्येक रिकॉर्ड एक पंक्ति लेता है; यह हर मान्य CSV फ़ॉर्मेट को पार्स नहीं करता है।
Quick Action क्या करेगा
यह वर्कफ़्लो अलग-अलग CSV फ़ील्ड की नहीं, बल्कि पूरी पंक्तियों की तुलना करता है। यह पहली पंक्ति को हेडर के रूप में सहेजता है, इसे आउटपुट में कॉपी करता है, और फिर उस हेडर के समान किसी भी बाद की पंक्ति को छोड़ देता है। अन्य पंक्तियाँ अपने मूल क्रम में रहती हैं, जिनमें दोहराई गई डेटा पंक्तियाँ भी शामिल हैं। यह तब एक व्यावहारिक विकल्प होता है जब एक्सपोर्ट किए गए बैच रिकॉर्ड के बीच एक ही हेडिंग डालते हैं।
यह विधि Automator के Run Shell Script एक्शन के माध्यम से macOS के इन-बिल्ट awk का उपयोग करती है। Apple Finder Quick Actions बनाने और Automator वर्कफ़्लो में शेल स्क्रिप्ट जोड़ने दोनों का दस्तावेजीकरण करता है। एक Quick Action वर्कफ़्लो बनाएं · Automator वर्कफ़्लो में शेल स्क्रिप्ट एक्शन का उपयोग करें
Finder Quick Action बनाएं
- Automator खोलें, File > New चुनें, Quick Action चुनें, फिर Choose पर क्लिक करें।
- वर्कफ़्लो के शीर्ष पर, Workflow receives current को files or folders पर सेट करें और एप्लिकेशन को Finder पर सेट करें।
- Actions लाइब्रेरी में Run Shell Script खोजें और इसे वर्कफ़्लो में खींचें।
- Shell को
/bin/zshऔर Pass input को as arguments पर सेट करें। नीचे दी गई स्क्रिप्ट को एक्शन में पेस्ट करें।
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
वर्कफ़्लो को Remove Repeated CSV Headers जैसे नाम से सहेजें। अस्थायी फ़ाइल स्रोत के बगल में बनाई जाती है, फिर प्रोसेसिंग के बाद आउटपुट नाम पर ले जाई जाती है। यदि वह आउटपुट पहले से मौजूद है, तो स्क्रिप्ट उसे बदलने के बजाय रुक जाती है। मूल इनपुट को कभी भी लिखने के लिए लक्षित नहीं किया जाता है।
इसे चलाएं और परिणाम देखें
Finder में, एक या अधिक CSV फ़ाइलें चुनें, प्रासंगिक Quick Actions मेनू खोलें, और Remove Repeated CSV Headers चुनें। प्रत्येक स्रोत के बगल में .cleaned.csv पर समाप्त होने वाली फ़ाइल देखें। परिणाम को किसी टेक्स्ट एडिटर या स्प्रेडशीट में खोलें और जांचें कि इसमें अभी भी एक हेडिंग है और प्रत्येक दोहराई गई हेडिंग के पहले और बाद की पंक्तियाँ मौजूद हैं। वर्कफ़्लो कोई कस्टम पूर्णता संदेश नहीं दिखाता है; यदि कोई फ़ाइल नहीं बनी है तो इसका मतलब यह हो सकता है कि आउटपुट पहले से मौजूद था या कोई प्रोसेसिंग त्रुटि हुई थी।
तुलना सटीक है: भिन्न कैपिटलाइज़ेशन, स्पेसिंग, विराम चिह्न या कोटिंग वाली हेडिंग को एक अलग पंक्ति माना जाता है और वह बनी रहेगी। यह प्रतिबंध यहाँ जानबूझकर रखा गया है; यह अनुमान लगाने से बचाता है कि फ़ाइल का टेक्स्ट अलग होने पर कौन सी पंक्तियाँ हेडिंग मानी जाएँ।
जानें कि यह पंक्ति-आधारित विधि कब अनुपयुक्त है
CSV में एम्बेडेड न्यूलाइन वर्णों वाले कोटेड फ़ील्ड हो सकते हैं। उस स्थिति में, एक लॉजिकल CSV रिकॉर्ड कई भौतिक पंक्तियों में विस्तृत हो सकता है, जबकि awk इनपुट को पंक्तियों के रूप में प्रोसेस करता है। यह स्क्रिप्ट तब किसी फ़ील्ड के अंदर की पंक्ति को रिकॉर्ड समझ सकती है या फ़ाइल को बाधित कर सकती है। Apple का macOS awk मैनुअल इसके पंक्ति-उन्मुख प्रोसेसिंग का वर्णन करता है; मल्टीलाइन CSV के लिए, इसके बजाय किसी ऐसे CSV-जागरूक टूल का उपयोग करें जो फ़ाइल के फ़ॉर्मेट का समर्थन करता हो। macOS awk मैनुअल
यह Quick Action व्हाइटस्पेस को सामान्य (normalize) नहीं करता है, लगभग मिलते-जुलते मिलानों को नहीं हटाता है, कॉलम नामों का निरीक्षण नहीं करता है, या फ़ाइलों को मर्ज नहीं करता है। यह एक संकीर्ण सफ़ाई के लिए उपयुक्त है: समीक्षा के लिए स्रोत को संरक्षित करते हुए पंक्ति-आधारित CSV एक्सपोर्ट से पहली भौतिक पंक्ति के सटीक दोहराव को हटाना।
स्रोत
- Mac पर Automator में Quick Action वर्कफ़्लो बनाएं — Apple Support
- Mac पर Automator वर्कफ़्लो में शेल स्क्रिप्ट एक्शन का उपयोग करें — Apple Support
- awk(1) — macOS 13.6.5 Manual Pages — FreeBSD Manual Pages