열 값을 기준으로 CSV 파일에서 행 선택

열 값을 기준으로 CSV 파일에서 행 선택

프로젝트 이름, 값, 설명, 구성 요소의 4개 열이 포함된 CSV 파일이 있는데 파일이 상당히 큽니다.

위의 CSV 파일에서 구성 요소를 지정하는 행만 표시하는 템플릿을 생성해야 합니다(예: 검색 기준인 구성 요소='abc').

답변1

내장된 쉼표가 없다고 가정하면 awk가 이에 적합합니다.

awk -F , '$4 == "abc" { print }' input.csv

답변2

csvkit: 의 다른 도구를 사용했습니다 csvgrep.

$ csvgrep -c 4 -m "abc" data.csv > test.csv

파일의 결과 내용은 다음과 같습니다 test.csv.

Itemname,Value,Description,Component
33,34,35,abc

-c보려는 열을 지정합니다. 제목을 사용할 수도 있습니다. 철자가 정확히 같은지 확인하세요. 대문자가 중요합니다.

$ csvgrep -c Component -m "abc" data.csv > test.csv

Itemname,Value,Description,Component
33,34,35,abc

그리고 -m일치 패턴입니다. 일치에 더 깊이 들어가고 싶다면 정규 표현식을 사용하여 이를 수행할 수 있는 방법이 있다고 확신합니다. 그런 다음 이라는 파일에 저장됩니다 test.csv.

답변3

다음과 같은 내용이 있습니다 data.csv.

Itemname,Value,Description,Component
1,2,3,4
5,6,7,8
9,10,11,12
13,14,15,16
17,18,19,20
21,22,23,24
25,26,27,28
29,30,31,32
33,34,35,abc
37,38,39,40
41,42,43,44
45,46,47,48
49,50,51,52
53,54,55,56
57,58,59,60
61,62,63,64
65,66,67,68
69,70,71,72
73,74,75,76
77,78,79,80
81,82,83,84
85,86,87,88
89,90,91,92
93,94,95,96
97,98,99,100

사용csvkit:

$ csvsql --query "SELECT * FROM data WHERE Component = 'abc'" data.csv
Itemname,Value,Description,Component
33,34,35,abc

관련 정보