मैं एकाधिक CSV फ़ाइलों को कॉलम द्वारा एक में विलय करने के बारे में कैसे जाउंगा। मैंने जो रिकॉर्ड किया है, वह एक वेबपेज से स्क्रैप की गई कंपनियों के चार्ट की स्थिति है। केवल पहली फ़ाइल में दो कॉलम होते हैं, 1 से 100 पदों के लिए, और दूसरा कॉलम जिसमें कंपनियों का नाम होता है। अन्य सभी फाइलों में केवल एक कॉलम होता है; केवल कंपनी के नाम को शामिल करना। अब मैं इन्हें नीचे बताए अनुसार मर्ज करना चाहता हूं। मैक/लिनक्स समाधान पसंदीदा। मैं बैश लिख सकता हूं, थोड़ा जावास्क्रिप्ट लेकिन पर्ल मेरे लिए उपयुक्त नहीं है।

1.csv:

position,name
1,microsoft
2,apple
3,google

और कई अन्य फाइलें, उनकी तिथि के नाम पर, इस तरह दिख रही हैं:

2.csv:

name
microsoft
apple
google

3.csv:

name
apple
microsoft
google

मर्ज किया गया संस्करण इस तरह दिखेगा:

position,name,name,name
1,microsoft,microsoft,apple
2,apple,apple,microsoft
3,google,google,google

एकमात्र समाधान जो मुझे मिल सकता है, बस सामग्री को एक के बाद एक जोड़ें (या संयोजित करें), जो वह नहीं है जिसकी मुझे तलाश है।

csv
0
Zettt 10 सितंबर 2017, 11:14
का संभावित डुप्लिकेट bash यह वह नहीं है जिसे आप ढूंढ रहे हैं? अंतिम परिणाम वही है जो आप खोज रहे हैं ?! परम -d "," बेशक (ss64.com/bash/paste.html)
 – 
Jakumi
10 सितंबर 2017, 11:29

2 जवाब

आपने वास्तव में यह नहीं बताया है कि आप किस भाषा में काम करना पसंद करेंगे। लेकिन अगर आप अजगर में काम करना चाहते हैं, तो आप पांडा डाउनलोड कर सकते हैं और अपने सीएसवी को एक पांडा तालिका में लोड कर सकते हैं। आप जो पूछ रहे हैं उसे प्राप्त करने के लिए आप एक टेबल जॉइन का उपयोग कर सकते हैं :)

https://pandas.pydata.org/pandas-docs/stable/merging.html

0
user2662833 10 सितंबर 2017, 11:23

यहां jq का उपयोग करके समाधान दिया गया है। यदि filter.jq में निम्न फ़िल्टर है:

def parse:
  reduce ( inputs
         | {f:input_filename, r:split(",")}
         | select(.r|length>0)
  ) as $i (
    {}
  ; .[$i.f] += [$i.r]
  )
;

def reorg:
    range([ map_values(length)[] ] | max) as $r
  | [ .[] | .[$r] // [range(.[0]|length)|""] | .[] ]
;

parse | reorg | join(",")

और फ़ाइलें 1.csv, 2.csv और 3.csv में नमूना डेटा होता है फिर कमांड

$ jq -Rrn -f filter.jq 1.csv 2.csv 3.csv

का उत्पादन

position,name,name,name
1,microsoft,microsoft,apple
2,apple,apple,microsoft
3,google,google,google
0
jq170727 11 सितंबर 2017, 01:35