커맨드 라인 CSV 뷰어? [닫은]


308

Linux / OS X 용 명령 행 CSV 뷰어를 아는 사람이 있습니까? 나는 비슷한 것을 생각하고 less있지만 더 읽기 쉬운 방식으로 열을 띄웁니다. (OpenOffice Calc 또는 Excel로 열면 괜찮을지 모르지만 필요한 데이터를 보는 데 너무 힘이 듭니다 .) 가로 및 세로 스크롤이 좋을 것입니다.


SC-IM은 CSV를 열 수있는 테이블의 CLI 뷰어 및 편집기입니다. github.com/andmarti1424/sc-im
12431234123412341234123

답변:


441

이것을 사용할 수도 있습니다 :

column -s, -t < somefile.csv | less -#2 -N -S

column 매우 편리한 표준 유닉스 프로그램입니다-각 열의 적절한 너비를 찾고 텍스트를 멋진 형식의 표로 표시합니다.

참고 : 빈 필드가있을 때마다 일종의 자리 표시자를 넣어야합니다. 그렇지 않으면 열이 다음 열과 병합됩니다. 다음 예제 sed는 자리 표시자를 삽입 하는 데 사용하는 방법을 보여줍니다 .

$ cat data.csv
1,2,3,4,5
1,,,,5
$ sed 's/,,/, ,/g;s/,,/, ,/g' data.csv | column -s, -t
1  2  3  4  5
1           5
$ cat data.csv
1,2,3,4,5
1,,,,5
$ column -s, -t < data.csv
1  2  3  4  5
1  5
$ sed 's/,,/, ,/g;s/,,/, ,/g' data.csv | column -s, -t
1  2  3  4  5
1           5

,,for 의 대체는 , ,두 번 수행됩니다. 당신은 한 번만 수행하면 1,,,4될 것입니다 1, ,,4두 번째 쉼표가 이미 일치하기 때문이다.


2
이 옵션이 정말 마음에 듭니다 column. 나는 이것을 짧은 쉘 스크립트로 만들었습니다 (대부분이 "어떻게 사용합니까?"와 오류 검사 코드입니다). github.com/benjaminoakes/utilities/blob/master/view-csv
Benjamin Oakes

24
'데비안 GNU / 리눅스'버전의 열에는 '-n'옵션이 있습니다 : "기본적으로, 열 명령은 -t 옵션을 사용할 때 여러 개의 인접한 구분 기호를 단일 구분 기호로 병합합니다.이 옵션은 해당 동작을 비활성화합니다. 데비안 GNU / 리눅스 확장. "
klokop

5
열 값이 따옴표로 묶여 있으면 쉼표로 표시됩니다. 이 문제를 해결하는 방법에 대한 아이디어가 있습니까?
TM.

3
에서 man column:-n By default, the column command will merge multiple adjacent delimiters into a single delimiter when using the -t option; this option disables that behavior. This option is a Debian GNU/Linux extension.
ezdazuzena

8
불행히도 값에 쉼표가 포함되어 있으면 따옴표로 묶어도 분할됩니다.
ffarquet

107

다음을 csvtool통해 (우분투에서) 설치할 수 있습니다

sudo apt-get install csvtool

그런 다음 다음을 실행하십시오.

csvtool readable filename | view -

이것은 매우 긴 값을 가진 셀이 있더라도 읽기 전용 vim 인스턴스 내부에서 멋지고 예쁘게 만듭니다.


2
데비안 기반 배포판에없는 사람들은이 도구가 여기에서 시작된 것 같습니다. docs.camlcity.org/docs/godisrc/ocaml-csv-1.1.6.tar.gz 불행히도 "홈페이지"링크는 죽었고 전체 아카이브를 한 번에 다운로드하는 쉬운 방법은 없습니다.
cincodenada

9
이 도구는 100Mb +의 파일을 처리 할 수 ​​없습니다
PedroSena

6
이 도구는 Centos7ocaml-csvbase
Bryce Guinta

72

csvkit을 살펴 보십시오 . UNIX 철학을 따르는 도구 세트를 제공합니다 (작고 단순하며 단일 용도이며 결합 될 수 있음).

다음은 무료 Maxmind World Cities 데이터베이스 에서 독일에서 가장 인구가 많은 도시 10 곳을 추출 하여 결과를 콘솔에서 읽을 수있는 형식으로 표시하는 예입니다.

$ csvgrep -e iso-8859-1 -c 1 -m "de" worldcitiespop | csvgrep -c 5 -r "\d+" 
  | csvsort -r -c 5 -l | csvcut -c 1,2,4,6 | head -n 11 | csvlook
-----------------------------------------------------
|  line_number | Country | AccentCity | Population  |
-----------------------------------------------------
|  1           | de      | Berlin     | 3398362     |
|  2           | de      | Hamburg    | 1733846     |
|  3           | de      | Munich     | 1246133     |
|  4           | de      | Cologne    | 968823      |
|  5           | de      | Frankfurt  | 648034      |
|  6           | de      | Dortmund   | 594255      |
|  7           | de      | Stuttgart  | 591688      |
|  8           | de      | Düsseldorf | 577139      |
|  9           | de      | Essen      | 576914      |
|  10          | de      | Bremen     | 546429      |
-----------------------------------------------------

Csvkit은 Python으로 작성되었으므로 플랫폼 독립적입니다.


1
내 MAC에서 잘 작동합니다. 큰 파일을 읽는 데 매우 유용합니다.
James Lim

4
나는 Csvkit을 좋아한다. csvlook <filename.csv> | less -S
Sandeep

5
csvkit을 얻으려면 pip install하면 pip install csvkit됩니다. 즐겨!
gloriphobia

46

Tabview : 경량 python curses 명령 줄 CSV 파일 뷰어 (및 목록 목록과 같은 다른 테이블 형식 파이썬 데이터)는 Github에 있습니다.

풍모:

  • 파이썬 2.7+, 3.x
  • 유니 코드 지원
  • 테이블 형식의 데이터를 쉽게 시각화 할 수있는 스프레드 시트와 같은보기
  • Vim-like navigation (h, j, k, l, g (top), G (bottom), 12G goto line 12, m-mark, '-goto mark 등)
  • 퍼시 스턴트 헤더 행 토글
  • 열 너비와 간격의 동적 크기 조정
  • 열별로 오름차순 또는 내림차순으로 정렬합니다. 숫자 값에 대한 '자연'순서 정렬
  • 전체 텍스트 검색, 검색 결과 사이를 순환하는 n 및 p
  • 전체 셀 내용을 보려면 'Enter'
  • Yank 셀 내용을 클립 보드로
  • F1 또는? 키 바인딩
  • 파이썬 명령 줄에서 사용하여 테이블 형식 데이터 (예 : 목록 목록)를 시각화

1
훌륭한 도구입니다. csvtool과 openoffice를 망가 뜨리는 거대한 파일을 열었습니다. 매우 빠릅니다.
Leonardo

Windows에서 'pip install tabview'가 성공적으로 끝나면 프로그램을 어떻게 시작합니까? Linux에서 'tabview file.csv'를 성공적으로 사용할 수 있지만 Windows가 작동하지 않는 것 같습니다. 감사!
Chris

curses 모듈을 Windows에서 사용할 수 있다고 생각하지 않습니다. 죄송합니다! 사용 가능한 타사 모듈이있을 수 있지만 Windows 용 개발을 수행하지 않았습니다.
Scott Hansen

설명 감사합니다! 결국 멋진 도구입니다!
Chris

1
@CiroSantilli 烏坎 事件 2016 六四 事件 法轮功, 불행히도 아직. 곧 탭뷰에 시간을 내기를 바라고 있습니다 ... 잠시 동안 휴면 상태였습니다. :(
Scott Hansen


22

nodejs 패키지 tecfu / tty-table 은 전체적으로 정확하게 설치하기 위해 설치 될 수 있습니다 :

apt-get install nodejs
npm i -g tty-table
cat data.csv | tty-table

tecfu / tty-table

스트림을 처리 할 수도 있습니다.

자세한 내용은 여기에서 터미널 사용에 대한 문서를 참조 하십시오 .


1
downvote 경우 이유를 남겨주세요. 이 패키지는 잘 작동합니다.
user3751385

9
nodejs는 웹 서버 플랫폼입니다. 전기 톱으로 빵을 자르는 사람을 추천해서는 안됩니다.
최대

23
node는 CLI 바인딩을 사용하는 범용 스크립팅 시스템입니다. CPL의 펄 원 라이너 또는 다른 것을 사용하는 것과 어떻게 다른가요?
Racheet

나는이 옵션을 정말로 좋아하지만 덜 파이프로 만들면 올바르게 보이지 않습니다. 적은 비용으로 작동하기 위해 여분의 것이 필요한지 알고 있습니까?
plafratt

이 패키지는 파일에 많은 열이 포함되어 있고 (특히 터미널 화면의 가로 너비보다 큰 너비를 처리 할 수있는 경우) 중단되고 이후에 올바르게 정렬되지 않습니다.
gented

10

xsv단순한 뷰어 이상입니다. 특히 큰 데이터 세트를 처리 할 때 명령 줄에서 대부분의 CSV 작업에 권장합니다.


9

내 FOSS 프로젝트 CSVfix를 사용하면 "ASCII art"테이블 형식으로 CSV 파일을 표시 할 수 있습니다.


정확히 내가 찾던 것. 나는 (당신은 ... 알고 당신의 방법을 오는 일부 패치가있을 수 있습니다) OS X 용으로 컴파일 시도해야합니다
벤자민 오크스

나는 그들을 매우 환영합니다. FOSS 프로젝트의 약간 우울한 측면 중 하나는 실제로 코드를 제공하는 사람이 거의 없다는 것입니다. 물론, 나는 다음 사람만큼 유죄입니다.

CSVfix 프로젝트가 리포지토리 탐색을 허용하지 않는 이유는 무엇입니까? 다른 사람이 코드를보기 어렵게한다고해서 기여를 할 가능성이 더 높지 않습니까?
Dirk Eddelbuettel 2009

1
내 게으른 게으름, 나는 두렵다. 또한 코드를 제공하면 누구나 코드를 얻을 수 있습니다. 리포지토리 만 제공 한 경우 SVM 또는 Hg를 설치해야합니다. 패치를 받기 시작하면 재고 할 것입니다.

마지막 2015년 2월 28일에 커밋
보리스

8

Ofri의 답변은 귀하가 요청한 모든 것을 제공합니다. 그러나 .. 명령을 기억하지 않으려면 ~ / .bashrc (또는 이에 상응하는)에이 명령을 추가 할 수 있습니다.

csview()
{
local file="$1"
sed "s/,/\t/g" "$file" | less -S
}

이것은 쉘 함수로 less -S감싸고 줄 바꿈을 중지하는 옵션을 사용한다는 점을 제외하고 Ofri의 대답과 정확히 동일 합니다.less 사무실 / oocalc처럼 동작합니다).

새 쉘을 열거 나 source ~/.bashrc현재 쉘을 입력 하고 다음을 사용하여 명령을 실행하십시오.

csview <filename>


5
인용 부호로 쉼표를 처리하지 않습니다.
Cheng

7

나는 pisswillis의 대답을 오랫동안 사용했습니다.

csview()
{
    local file="$1"
    sed "s/,/\t/g" "$file" | less -S
}

그러나 http://chrisjean.com/2011/06/17/view-csv-data-from-the-command-line 에서 찾은 일부 코드를 결합 하여 나에게 더 좋습니다.

csview()
{
    local file="$1"
    cat "$file" | sed -e 's/,,/, ,/g' | column -s, -t | less -#5 -N -S
}

그것이 나를 위해 더 잘 작동하는 이유는 넓은 열을 더 잘 처리하기 때문입니다.



3

간단한 옵션은 다음과 같습니다.

sed "s/,/\t/g" filename.csv | less

2
그것은 나의 첫 성향이기도했다. 그러나 열의 가장 긴 값과 일치하는 충분한 탭을 삽입해야합니다. 조금 복잡해지기 시작했으며 "다른 사람이 이미이 작업을 수행해야합니다"라고 생각했습니다.
Benjamin Oakes

2
또한 쉼표가 인용되어 구분 기호가 아니라는 사실을 무시하고 있습니다. (다른 것들 중에서)
Ariel Allon


2

명령 줄에서 CSV 형식을 지정하기 위해이 csv_view.sh를 작성했습니다. 이는 전체 열을 읽고 각 열의 최적 너비를 계산합니다 (perl이 필요하고 필드에 쉼표가 없으며 가정도 적습니다).


#!/bin/bash

perl -we '
  sub max( @ ) {
    my $max = shift;

    map { $max = $_ if $_ > $max } @_;
    return $max;
  }

  sub transpose( @ ) {
    my @matrix = @_;
    my $width  = scalar @{ $matrix[ 0 ] };
    my $height = scalar @matrix;

    return map { my $x = $_; [ map { $matrix[ $_ ][ $x ] } 0 .. $height - 1 ] } 0 .. $width - 1;
  }

  # Read all lines, as arrays of fields
  my @lines = map { s/\r?\n$//; [ split /,/ ] } ;

  my $widths =
    # Build a pack expression based on column lengths
    join "",

    # For each column get the longest length plus 1
    map { 'A' . ( 1 + max map { length } @$_ ) }

    # Get arrays of columns
    transpose

    @lines
  ;

  # Format all lines with pack
  map { print pack( $widths, @$_ ) . "\n" } @lines;
' $1 | less -NS


2

TxtSushi 를 사용 하면 다음을 수행 할 수 있습니다.

csvtopretty filename.csv | less -S

한 줄 설치 절차가 아님에 대한 공감. 나는이 :(를 컴파일 할 시간이 없어 당신이 좋지 않을까 패키지를 제공 할 수 있다면..
masterxilo

@masterxilo 이는 다운 보류에 대한 정당한 이유가 아닙니다. 오늘날 많은 패키지는 설치 단계가 몇 단계 필요합니다. 또한 주석을 작성하는 것보다 설치하는 것이 더 빠를 것입니다.
유발 메소 러


2

나는 이러한 (그리고 다른) 목적을 위해 tablign 을 만들었습니다 . 함께 설치

[sudo -H] pip3 install tablign

$ cat test.csv
Header1,Header2,Header3
Pizza,Artichoke dip,Bob's Special of the Day
BLT,Ham on rye with the works,
$ tablign test.csv
Header1 , Header2                   , Header3
Pizza   , Artichoke dip             , Bob's Special of the Day
BLT     , Ham on rye with the works ,

데이터가 쉼표 이외의 것으로 분리 된 경우에도 작동합니다. 가장 중요한 것은 구분 기호를 유지 하므로 [Markdown, CSV, LaTeX] 구문을 그대로 유지 하면서 ASCII 테이블의 스타일을 지정할 수도 있습니다.


Collecting tablify Could not find a version that satisfies the requirement tablify (from versions: ) No matching distribution found for tablify
masterxilo

@masterxilo 이름을으로 바꿨습니다 tablign. 설명에서 수정되었습니다.
Nico Schlömer

1
완벽합니다.
masterxilo

0

이 목적을 위해 Groovy에서 viewtab 스크립트를 작성했습니다 . 당신은 그것을 다음과 같이 호출합니다 :

viewtab filename.csv

기본적으로 명령 줄에서 호출하고 CSV 및 탭으로 구분 된 파일을 처리하며 Excel과 Numbers가 질식 한 매우 큰 파일을 읽을 수 있으며 매우 빠릅니다. 텍스트 전용이라는 의미에서 명령 줄은 아니지만 플랫폼에 독립적이며 명령 줄 환경에서 작업하는 동안 많은 또는 큰 CSV 파일을 신속하게 검사하는 문제에 대한 해결책을 찾는 많은 사람들에게 적합합니다. .

스크립트 및 설치 방법은 다음과 같습니다.

http://bayesianconspiracy.blogspot.com/2012/06/quick-csvtab-file-viewer.html


0

파이썬에는 다음과 같은 짧은 명령 행 스크립트가 있습니다 : https://github.com/rgrp/csv2ascii/blob/master/csv2ascii.py

다운로드하여 경로에 배치하십시오. 사용법은

csv2ascii.py [options] csv-file-path

csv 파일 csv-file-path을 ASCII 형식으로 변환 하여 stdout에 결과를 반환하십시오. 경우 csv-file-path=이 '-'다음 표준 입력에서 읽습니다.

옵션 :

  -h, --help이 도움말 메시지를 표시하고 종료
  -w WIDTH, --width = WIDTH
                        ASCII 출력 너비
  -c COLUMNS, --columns = COLUMNS
                        이 열 수만 표시
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.