उबंटू में CSV फ़ाइलों का संपादन [बंद]


9

उबंटू में CSV फ़ाइलों को संपादित करने का एक अच्छा तरीका क्या है?

फाइलें कुछ इस तरह दिखती हैं:

This,is,data,with,a,header
2,2,3,4,,
1,,3,,6,6
,5,3,5,5,6
1,2,,,,
1,2,3,4,8,6
1,,9,,5,9
-1,,3,4,5,6
1,2,0,4,5,6

मैं OpenOffice का उपयोग कर रहा हूं, लेकिन सभी फ़ील्ड को उद्धृत करने के डिफ़ॉल्ट व्यवहार को बंद करने के लिए लगभग 5 क्लिक लगते हैं।

मैं कुछ हल्का और आसान उपयोग करना चाहता हूं जो डेटा डालने / हटाने और स्तंभ-आधारित सॉर्टिंग की अनुमति देगा।

जवाबों:


3

विम के लिए, एक अच्छा प्लगइन है csv.vim


मैं बस उस प्लगइन से आता हूं जो एक विकल्प की तलाश में है। जब सीएसवी "बड़ा" होता है तो इसमें बहुत बड़ा प्रदर्शन होता है; वर्तमान में यह एक सीएसवी के लिए लूप करता है जिसकी 500 लाइनें हैं।
k0pernikus


2

आप इस अंत तक सूक्ति का उपयोग कर सकते हैं। मेरे सिस्टम पर (क्रंचबैंग) और आपके उदाहरण में छोटी फ़ाइल के साथ, लीफपैड लगभग 2M RAM की खपत करता है; सूक्ति, 4M; और खोपड़ी (लिब्रे ऑफिस से), 34 एम। सूक्ति स्पष्ट रूप से हल्के अंत पर है, और इसे फ़ाइल को खोलने पर आपके विभाजक का सही पता लगाना चाहिए।

लेकिन (वहाँ एक है लेकिन ...) gnumeric आपको मेनू की बाधा से गुजरने के बिना संशोधित फ़ाइल को सहेजने नहीं देगा। इसे ठीक करने के लिए BASH स्क्रिप्ट क्या है। स्क्रिप्ट आपकी फ़ाइल में संशोधित स्प्रैडशीट सामग्री को वापस चिपकाने के लिए xsel (एक हल्के कमंडल-लाइन क्लिपबोर्ड प्रबंधक) पर निर्भर करती है। यदि खट्टा (नहीं चलाया जाता है), तो यह स्क्रिप्ट आपको दो कार्यों तक पहुँच देती है, gnumeric में फ़ाइल खोलने के लिए gn:

gn filename

और gp को फ़ाइल में वापस पेस्ट करने के लिए और gnumeric को बंद करने के लिए gp:

gp

(व्यक्तिगत रूप से, मैं इस स्क्रिप्ट को अपने .bashrc में gn और gp फ़ंक्शंस उपलब्ध कराने के लिए जब भी मैं एक टर्मिनल खोलता हूँ।)

#! /bin/bash

# once sourced by the shell, this script provides two functions:

# gn        to open a file with gnumeric
# gp        to update the file with gnumeric's selection

# requires grep, sed, awk, and the xsel utility


# name of the target file: used in gn () and gp ()
# ==================================================
gn_file=

# take note of target file and open it with gnumeric if not already opened
# ==================================================
gn () {
    # sanity checks
    if [[ -z $1 ]]; then
        echo 'Usage: gn file'
        return
    fi
    if ! [[ -f $1 && -r $1 ]]; then
        echo "Cannot find/use $1"
        return
    fi
    # yes, this is right; job report, if any, has "$gn_file" not expanded
    if jobs -l | grep 'Running.* gnumeric "$gn_file"' > /dev/null; then
        echo 'Already editing with gnumeric.'
        return
    fi
    echo 'Once done, select the part of the spreadsheet you want to save,'
    echo 'press Ctrl-C, go back to the command line, and type gp [ENTER].'
    # do the job
    gn_file=$1
    gnumeric "$gn_file" &
}

# paste selection into target file and close gnumeric
# ==================================================
gp () {
    # sanity checks
    if [[ -z $gn_file || ! -f $gn_file ]]; then
        echo 'Cannot find/use target file.'
        return
    fi
    local gnumeric_job=$( jobs -l | grep 'Running.* gnumeric "$gn_file"' )
    if [[ -z $gnumeric_job ]]; then
        echo 'No gnumeric instance to paste from.'
        return
    fi
    if [[ -z $( xsel -ob ) ]]; then
        echo 'Nothing to paste.'
        return
    fi
    local temp_file=$( mktemp "$PWD/temp.XXXXXX" )
    # paste X selection (o = output, b = clipboard mode)
    xsel -ob > "$temp_file"
    # replace tabs to get a CSV file
    local tab=$'\t'
    sed --in-place "s/$tab/,/g" "$temp_file"
    # must close gnumeric before updating file
    local job_id=$( echo "$gnumeric_job" | awk '{print $2}' )
    kill "$job_id"
    mv --backup "$temp_file" "$gn_file"
    echo "$gn_file updated."
}

जैसा कि स्क्रिप्ट स्वयं बताएगी कि आपकी फ़ाइल को gnumeric के साथ खोलने पर, जब आप अपने संपादन के साथ किए जाते हैं, तो आपको उस स्प्रैडशीट के भाग का चयन करना होगा जिसे आप CTr-C (क्लिपबोर्ड में इस हिस्से को कॉपी करने के लिए) दबाने से पहले सहेजना चाहते हैं। कमांड लाइन (Alt-Tab) पर वापस जा कर, gp दर्ज करने से क्लिपबोर्ड की सामग्री के साथ आपकी फ़ाइल अपडेट हो जाएगी और जूमेरिक बंद हो जाएगी। आपके संशोधित मूल्यों में उनके आस-पास उद्धरण नहीं होंगे, लेकिन उन्हें टैब द्वारा अलग किया जाएगा; इसलिए, स्क्रिप्ट कॉमा से टैब को बदलने के लिए sed का उपयोग करती है।

मैंने कमांड लाइन से CSV डेटा फ़ाइलों पर काम करने के लिए इसे एक कुशल तरीका माना है। स्क्रिप्ट को फ़ाइल को सही ढंग से तब तक सहेजना चाहिए जब तक कि उसमें कॉमा से अलग किए गए फ़ील्ड के भीतर टैब न हों (जो आपके डेटा-विश्लेषण उदाहरण में ऐसा लगता है)।


1

मुझे पता है कि {लिब्रे, ओपन} ऑफिस के बारे में आपका क्या मतलब है। टीबीएच, मुझे लिनक्स पर वास्तव में कुछ भी अच्छा नहीं मिला है जो हल्का भी है।

"सबसे अच्छा" (हाँ, विडंबना उद्धरण में) मैंने पाया है कि एक जावा ऐप है जिसे csveditor कहा जाता है यह बहुत साफ है, लेकिन वास्तव में सर्वश्रेष्ठ UI दिशानिर्देशों का पालन नहीं करता है।



0

मैं phpstorm का उपयोग कर रहा हूं और CSV फ़ाइलों के साथ बहुत कुछ करना है, और यह उन्हें तालिका दृश्य में संपादन का समर्थन करता है और यह vim plugin csv.vim या परमाणु प्लगइन tablr की तुलना में बहुत बेहतर प्रदर्शन करता है ।

टेबल व्यू का स्क्रीनशॉट

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

(फिर भी यह सही नहीं है क्योंकि कभी-कभी यह फ़ाइल को बहुत बड़ी त्रुटियों को दिखाता है।)


0

मैं एटम संपादक के लिए tablr प्लगइन का सुझाव देता हूं ।

यह सबसे हल्का विकल्प नहीं है, लेकिन सबसे कम क्लिकों में सरल संपादन प्राप्त करता है।

यहां छवि विवरण दर्ज करें


-1

मैंने आपके उदाहरण को test.csv के रूप में सहेजा और लिबरऑफ़िस के साथ इसे खोला जिसमें कोई परेशानी नहीं है:

$ cat test.csv
This,is,data,with,a,header
2,2,3,4,,
1,,3,,6,6
,5,3,5,5,6
1,2,,,,
1,2,3,4,8,6
1,,9,,5,9
-1,,3,4,5,6
1,2,0,4,5,6
$ libreoffice test.csv 

मुझे तब यह संवाद मिला, और विभाजक के रूप में "अल्पविराम" चुना:

यहां छवि विवरण दर्ज करें

मैंने ओके पर क्लिक किया और यह मिला:

यहां छवि विवरण दर्ज करें

आपको और क्या चाहिए?


ओपनऑफ़िस के साथ जो समस्या है, वह यह है कि कभी-कभी विभाजक विकल्प नोटिस के बिना बदल जाते हैं, और फ़ाइल को उद्धरण के साथ सहेजा जाता है (OO को चूक के लिए मजबूर होना पड़ता है)। ऐसा तब होता है जब किसी फ़ाइल को फ़ाइल में लोड करने के बजाए सेव किया जाता है।
एंड्रयू वुड

यह निश्चित रूप से OpenOffice के साथ संभव है, हालांकि, आप सही हैं।
एंड्रयू वुड

1
जहाँ तक "आपको और क्या चाहिए", मैं @AndrewWood की स्थिति में हूँ और आम तौर पर कम की जरूरत है :) मैंने व्यक्तिगत रूप से इस सवाल को पहले पूछा है। मुझे लिब्रे ऑफिस पसंद है। मैं इसका हर समय उपयोग करता हूं। लेकिन कभी-कभी आप एक सरल सीएसवी संपादक चाहते हैं जो रैम का एक बड़ा हिस्सा नहीं लेता है और बस आपके रास्ते से बाहर रहता है।
रिच होमोलका

@RichHomolka, आपको सच बताने के लिए, मैं gawk:)
टेराडो

प्रदर्शन। एक बार सीएसवी थोड़ा बड़ा हो जाता है, बस लोड करना उन्हें हमेशा के लिए ले जाता है, और मैं अब ओपनऑफिस के भीतर ऐसी फाइलों को संपादित करने की कोशिश भी नहीं करता।
k0pernikus
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.