우분투에서 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 번의 클릭이 필요합니다.
데이터 삽입 / 삭제 및 열 기반 정렬을 가능하게하는 가볍고 사용하기 쉬운 것을 찾고 싶습니다.
답변
vim의 경우 멋진 플러그인 csv.vim이 있습니다.
답변
java CsvEditors (예 : csveditor , reCsvEditor )는 살펴볼 가치가 있습니다.
답변
이를 위해 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 데이터 파일을 작업하는 효율적인 방법이라는 것을 알았습니다. 스크립트는 쉼표로 구분 된 필드 내에 탭이 포함되어 있지 않으면 파일을 올바르게 저장해야합니다 (데이터 분석 예제에서와 같이).
답변
{Libre, Open} Office에 대한 귀하의 의견을 알고 있습니다. TBH, 나는 리눅스에서도 가벼운 것을 발견하지 못했습니다.
지금까지 찾은 “최고”(예, Ironic 인용 부호)는 csveditor 라는 Java 앱입니다. 매우 깨끗하지만 실제로 최상의 UI 지침을 따르지는 않습니다.
답변
DMcsvEditor 사용 합니다 . 빠르고 가벼우 며 몇 가지 기본 유용한 옵션이 있습니다.
답변
phpstorm을 사용하고 있으며 CSV 파일을 많이 처리 해야하며 테이블보기에서 파일을 편집 할 수 있으며 vim 플러그인 csv.vim 또는 atom 플러그인 tablr 보다 훨씬 잘 수행 됩니다.
IntelliJ Idea, Android Studio, Pycharm 및 RubyMine과 같은 다른 편집기에도 동일하게 적용됩니다. 무료 소프트웨어는 아니지만 일부 제품에는 커뮤니티 에디션이 있습니다.
(때로는 파일에 너무 큰 오류가 표시되기 때문에 문턱이 완벽하지는 않습니다.)