>

이 CSV 파일이 있습니다

4,1,0,1,1,1,0,0,0
5,1,0,1,2,1,0,0,0
6,1,0,1,3,1,0,0,0
7,1,0,1,4,1,0,0,0
8,1,0,2,3,2,0,0,0
9,1,0,2,4,2,0,0,0
10,1,0,2,5,2,0,0,0
11,1,0,2,6,2,0,0,0
12,1,1,3,3,3,0,0,1
13,1,1,3,4,3,0,0,1
14,1,1,3,5,3,0,0,1
15,1,1,3,6,3,0,0,1
16,1,1,3,7,3,0,0,1
17,1,1,4,6,4,0,0,1
18,1,1,4,7,4,0,0,1
19,1,1,4,8,4,0,0,1
20,1,1,5,7,5,0,0,1

8로 시작하는 줄에 grep하고 싶습니다 나는 노력하고있다

grep 8 example.csv

그러면 나는 다음과 같이된다

8,1,0,2,3,2,0,0,0
18,1,1,4,7,4,0,0,1
19,1,1,4,8,4,0,0,1

8로 시작하는 줄을 원합니다. 어떻게해야합니까?


  • 답변 # 1

    grep ^8, example.txt

    Where ^는 줄의 시작 부분에서 일치하는 패턴을 시작해야 함을 나타냅니다. 또한 정규 표현식에 ","를 추가하여 80으로 시작하는 줄과 일치하지 않습니다.

  • 답변 # 2

    perl 로 태그를 지정 했으므로 펄 솔루션을 찾고 있다고 가정합니다. 가장 간단하지만 가장 강력한 방법은 다음과 같습니다.

    $ perl -ne 'print if /^8,/' example.csv
    8,1,0,2,3,2,0,0,0
    
    
    이것은 @Dienow의 grep 와 동일합니다.  해결책. -F 를 사용하는 것도 가능합니다  명령 줄 옵션을 사용하여 쉼표로 줄을 나누십시오. 인용 된 필드, 이스케이프 된 구분 기호 등의 경우는 처리되지 않습니다.

    $ perl -F, -nle 'print if $F[0]==8' example.csv
    8,1,0,2,3,2,0,0,0
    
    

    CSV 파일을 많이 사용하는 경우 Text::CSV 를 사용하는 것이 좋습니다.  (또한 Text::CSV_XS 설치  속도로)

    use warnings;
    use strict;
    use Text::CSV;
    my $csv = Text::CSV->new({ binary=>1, auto_diag=>2, eol=>$/ });
    while ( my $row = $csv->getline(*ARGV) ) {
        $csv->print(select, $row) if $row->[0] == 8;
    }
    $csv->eof or $csv->error_diag;
    
    

    그런 다음 이렇게 실행하십시오 :

    $ perl csv.pl example.csv
    8,1,0,2,3,2,0,0,0
    
    

    입력 줄을 다시 포맷 할 수 있다는 유일한 경고는 있지만 (물론 여전히 올바른 CSV 임)

  • 이전 node.js - AJV 스키마 유효성 검사에 실패
  • 다음 javascript - 오류가 발생했습니다 - 리소스 또는 개념이 이전 게시물을 확인했지만 코드로 도움이되지 않습니다