csv에서 배열 열 잘라내기

csv에서 배열 열 잘라내기

CSV 파일에서 배열 열을 자르고 싶습니다. 예를 들어 다음 CSV 파일이 표시되면

입력.csv

1,2,"{1,2,3}",1

3,4,"{3,9,1}",2

8,9,"{10,12,30}",3

내가 원하는 출력은

출력.csv

1,2,3

3,9,1

10,12,30

나는 사용해 보았지만 cut -d , -f 3 input.csvcut -d { -f 3 input.csv다 작동하지 않았습니다. 도움을 주셔서 감사합니다. 미리 감사드립니다.

답변1

awk를 사용하여 여러 필드 구분 기호를 정의할 수 있으므로 두 -F'[]'개의 중괄호를 구분 기호로 정의하고 두 번째 필드를 인쇄할 수 있습니다.

awk -F'[{}]' '{print $2}' input.csv
1,2,3
3,9,1
10,12,30

답변2

$ cat input.csv
1,2,"{1,2,3}",1
3,4,"{3,9,1}",2
8,9,"{10,12,30}",3

$ sed -E 's/^([^,],){2}"\{([^}]+).*/\2/' input.csv
1,2,3
3,9,1
10,12,30
  • 일부 버전은 확장 정규식 대신 사용 sed됩니다 .-r-E
  • ^([^,],){2}처음 두 열
  • "\{"{세 번째 열은 일치하지만 캡처되지 않았습니다.
  • ([^}]+)}문자 캡처
  • .*남은 줄
  • 전체 줄을 원하는 문자열로 바꾸십시오.


그리고 grep그리고pcre

$ grep -oP '^([^,],){2}"\{\K[^}]+' input.csv 
1,2,3
3,9,1
10,12,30

관련 정보