우분투에서 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

vim의 경우 멋진 플러그인 csv.vim이 있습니다.


나는 그 플러그인에서 대안을 찾고 있습니다. csv가 "더 큰"경우 큰 성능 문제가 있습니다. 현재 그것은 500 줄을 가진 CSV를 위해 반복됩니다.
k0pernikus


2

이를 위해 gnumeric을 사용할 수 있습니다. 내 시스템 (Crunchbang)에서 예제와 같이 작은 파일로 leafpad는 약 2M의 RAM을 소비합니다. 그누 머, 4M; 및 34M의 scalc (LiberOffice). Gnumeric은 가벼우면서도 파일을 열 때 구분 기호를 올바르게 감지해야합니다.

그러나 (그러나 ...) gnumeric은 메뉴의 장애물을 거치지 않고 수정 된 파일을 저장할 수 없습니다. 다음은이를 해결하기위한 BASH 스크립트입니다. 이 스크립트는 xsel (가벼운 명령 줄 클립 보드 관리자)을 사용하여 수정 된 스프레드 시트 내용을 파일에 다시 붙여 넣습니다. 경우 공급 (실행되지 않음),이 스크립트는 gnumeric과에서 파일을 열 GN 두 가지 기능에 액세스 할 수 있습니다 :

gn filename

gp를 사용하여 파일에 내용을 다시 붙여 넣고 gnumeric을 닫습니다.

gp

(개인적으로 터미널을 열 때마다 gn 및 gp 함수를 사용할 수 있도록 .bashrc에이 스크립트를 제공합니다.)

#! /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를 입력하면 클립 보드의 내용으로 파일이 업데이트되고 gnumeric이 닫힙니다. 수정 된 값에는 따옴표가 없지만 탭으로 구분됩니다. 따라서 스크립트는 sed를 사용하여 탭을 쉼표로 바꿉니다.

나는 이것이 명령 줄에서 CSV 데이터 파일을 작업하는 효율적인 방법이라는 것을 알았습니다. 스크립트는 쉼표로 구분 된 필드 내에 탭이 포함되어 있지 않으면 파일을 올바르게 저장해야합니다 (데이터 분석 예제에서와 같이).


1

{Libre, Open} Office에 대한 귀하의 의견을 알고 있습니다. TBH, 나는 리눅스에서도 가벼운 것을 발견하지 못했습니다.

지금까지 찾은 "최고"(예, Ironic 인용 부호)는 csveditor 라는 Java 앱입니다. 매우 깨끗하지만 실제로 최상의 UI 지침을 따르지는 않습니다.



0

phpstorm을 사용하고 있으며 CSV 파일을 많이 처리 해야하며 테이블보기에서 파일을 편집 할 수 있으며 vim 플러그인 csv.vim 또는 atom 플러그인 tablr 보다 훨씬 잘 수행 됩니다.

테이블 뷰 스크린 샷

IntelliJ Idea, Android Studio, Pycharm 및 RubyMine과 같은 다른 편집기에도 동일하게 적용됩니다. 무료 소프트웨어는 아니지만 일부 제품에는 커뮤니티 에디션이 있습니다.

(때로는 파일에 너무 큰 오류가 표시되기 때문에 문턱이 완벽하지는 않습니다.)



-1

예제를 test.csv로 저장하고 문제없이 LibreOffice로 열었습니다.

$ 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 

그런 다음이 대화 상자가 나타나고 "쉼표"를 구분 기호로 선택했습니다.

여기에 이미지 설명을 입력하십시오

확인을 클릭하고 이것을 얻었습니다.

여기에 이미지 설명을 입력하십시오

더 필요한 게 뭐야?


openoffice에서 발생하는 문제는 때로는 구분 기호 옵션이 예고없이 변경되고 파일이 따옴표 구분 기호로 저장된다는 것입니다 (OO는 기본값을 강제하지 않는 것 같습니다). 파일을로드하지 않고 파일을 저장할 때 더 많이 발생합니다.
Andrew Wood

OpenOffice를 사용하면 확실히 가능합니다.
앤드류 우드

1
"필요한 것"까지는 @AndrewWood의 상황에 있었고 일반적으로 덜 필요합니다. :) 나는 개인적으로이 질문을했습니다. 저는 LibreOffice를 좋아합니다. 나는 항상 그것을 사용합니다. 그러나 때로는 엄청난 양의 RAM을 차지하지 않고 방해가되지 않는 간단한 CSV 편집기가 필요합니다.
Rich Homolka 2013

@RichHomolka, 당신에게 진실을 말하기 위해, 나는 사용합니다 gawk:)
terdon

공연. csv가 조금 커지면로드하는 데 시간이 오래 걸리고 OpenOffice에서 더 이상 이러한 파일을 편집하지 않습니다.
k0pernikus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.