जवाबों:
आपको यहांcat
बताए अनुसार कमांड से अधिक की आवश्यकता होगी :
कहते हैं कि तुम 3 सीएसवी-फ़ाइलें: file1.csv
, file2.csv
, और file3.csv
और उन्हें शामिल करना चाहते हैं bigfile.csv
और अपने हैडर हमेशा (केवल) पहली पंक्ति है, तो इस्तेमाल होता है
या तो (प्रथम फ़ाइल "file1.csv" से शीर्ष लेख रखें):
cat file1.csv <(tail +2 file2.csv) <(tail +2 file3.csv) > bigfile.csv
या ("फ़ाइल" से शुरू होने वाले सभी फ़ाइलों के शीर्ष लेख हटाएं):
awk 'FNR > 1' file*.csv > bigfile.csv
tail -n+2
, tail +2
काम नहीं करेगा
मैं शीर्ष उत्तर से सहमत हूं लेकिन मैं इसे निम्नलिखित परिदृश्य के साथ विस्तारित करने का सुझाव देता हूं (जैसा कि मैं टिप्पणी नहीं कर सकता):
यदि आप चाहते हैं कि आउटपुट फ़ाइल में हेडर (एक बार) सही स्क्रिप्ट हो तो:
awk '(NR == 1) || (FNR > 1)' file*.csv > bigfile.csv
FNR एकल फ़ाइल में संसाधित रिकॉर्ड की संख्या का प्रतिनिधित्व करता है। और NR विश्व स्तर पर इसका प्रतिनिधित्व करता है, इसलिए पहली पंक्ति को स्वीकार किया जाता है और बाकी को पहले की तरह अनदेखा किया जाता है।
आप { ; }
प्रक्रिया प्रतिस्थापन के बजाय एक समूह कमांड ( ) का उपयोग कर सकते हैं ( <()
):
{ head -n1 file1.csv; for f in file*.csv; do tail -n+2 "$f"; done; } > new.csv
यह CRLF लाइन एंडिंग के साथ भी काम करता है जब तक कि फाइलें एक खाली लाइन ( \r\n
) के साथ समाप्त हो जाती हैं ।
सिर और पूंछ के केवल-संस्करण को POSIX 1003.1-2001 द्वारा अप्रचलित कर दिया गया था, और उनके परिणामस्वरूप कुछ वातावरणों में चेतावनी दी गई थी।
चैंकिंग स्क्रिप्ट के लिए बड़े CSV में समान कॉलम वाले दो बड़े CSV को जोड़ने की आवश्यकता है (डेटा में अद्वितीय आईडी नहीं है)।
पहले दूसरी सीएसवी से हेडर लिया
awk 'FNR > 1' file2.csv > file2_noheading.csv
अगला, निम्नलिखित के माध्यम से संक्षिप्त किया गया है
cat file1.csv file2_noheading.csv > newfile.csv
यदि आपके पास एक टन फाइलें हैं तो आसान समाधान:
awk 'FNR > 1' *.csv > merged.csv
बस बड़ी फ़ाइल को संपादित करने और हेडर को वापस जोड़ने के लिए वापस जाएं।
awk 'FNR > 1' file*.csv > bigfile.csv
? यह!
file
cat <(cat file1.csv) <(tail +2 file2.csv) <(tail +2 file3.csv) > bigfile.csv