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.csv
둘 cut -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