""
내부에는 다음과 같이 구분된 많은 데이터가 있습니다 . 아래 두 줄의 예,
"stampthisandthat.com","GANDI SAS","[email protected]","whois.gandi.net","A.DNS.GANDI.NET|B.DNS.GANDI.NET|C.DNS.GANDI.NET|","16-feb-2012","28-feb-2013","16-feb-2014","2012-02-16 00:00:00 UTC","2013-02-28 00:00:00 UTC","2014-02-16 00:00:00 UTC","clientTransferProhibited","2013-11-12 08:00:00 UTC","[email protected]","Laura VOGT","","Gandi, 63-65 boulevard Massena","","","","(Gandi) Paris","","(Gandi) 75013","(Gandi) FR","33143730576","","33170377666","","[email protected]","Laura VOGT","","Gandi, 63-65 boulevard Massena","","","","(Gandi) Paris","","(Gandi) 75013","(Gandi) FR","33143730576","","33170377666",""|
"salochinbd.com","FASTDOMAIN, INC.","[email protected]","whois.fastdomain.com","NS1.IPAGE.COM|NS2.IPAGE.COM|","17-feb-2012","03-feb-2013","17-feb-2014","2012-02-17 00:00:00 UTC","2013-02-03 00:00:00 UTC","2014-02-17 00:00:00 UTC","ok","2013-11-12 08:00:00 UTC","[email protected]","","","","","","","Cedar Rapids","Iowa","52402","UNITED STATES","","","13192100679","","[email protected]","","","","","","","Cedar Rapids","Iowa","52402","UNITED STATES","","","13192100679",""|
특정 데이터만 보관하려면 어떻게 해야 하나요? 예를 들어 첫 번째, 두 번째, 다섯 번째 데이터만 유지하는 방법입니다 ""
.
답변1
cut -d\" -f2,4,10 <in | tr \" , >out
...필드 1,2,5에 대한 참조 비트만 가져온 다음 쉼표로 구분했는지 확인합니다.
아니면 따옴표 안에 쉼표가 있을 수도 있기 때문에...
cut -d\" -f-5,10-11 <in | sed s/,$// >out
...심지어...
cut -d\" -f-5,10 <in | paste -d\" - /dev/null >out
...올바르게 설정했을 수도 있습니다.
첫 번째는 다음과 같이 인쇄됩니다.
stampthisandthat.com,GANDI SAS,A.DNS.GANDI.NET|B.DNS.GANDI.NET|C.DNS.GANDI.NET|
salochinbd.com,FASTDOMAIN, INC.,NS1.IPAGE.COM|NS2.IPAGE.COM|
...그리고 두 번째와 세 번째도...
"stampthisandthat.com","GANDI SAS","A.DNS.GANDI.NET|B.DNS.GANDI.NET|C.DNS.GANDI.NET|"
"salochinbd.com","FASTDOMAIN, INC.","NS1.IPAGE.COM|NS2.IPAGE.COM|"
다음 예에서는 필드 1,3,17,21,22,23,24에서 유사한 작업을 수행하는 방법을 보여줍니다.
printf '"%s"\n' "$(seq -s\",\" 35)" |
cut -d\" -f-3,6-7,34-35,42-48 |
paste -d\" - /dev/null
"1","3","17","21","22","23","24"
...다음과 같이 출력에서 해당 필드만 가져옵니다 seq
.
"1","2","3",..."35"
답변2
이라는 잘 알려지지 않은 프로그램이 있습니다.CSV 견적이를 통해 cut
, , 및 sed
와 같은 표준 도구를 사용하여 awk
CSV 파일을 처리 할 수 있습니다. 따옴표 안의 특수 문자를 인쇄할 수 없는 문자에 매핑한 다음 다시 매핑하는 방식으로 작동합니다. 이 프로그램을 사용하면 다음과 같이 간단합니다.
csvquote file.csv | cut -d , -f 1,2,5 | csvquote -u
산출:
"stampthisandthat.com","GANDI SAS","A.DNS.GANDI.NET|B.DNS.GANDI.NET|C.DNS.GANDI.NET|"
"salochinbd.com","FASTDOMAIN, INC.","NS1.IPAGE.COM|NS2.IPAGE.COM|"
답변3
awk -F',' '{print $1 $2 $5}'
- 이게 당신이 찾고 있는 거예요?
답변4
쉼표가 포함된 필드 문제를 해결하려면 필드 구분 기호를 다음으로 변경하세요.인용문 + 쉼표;필드에 포함하는 쉼표가 필드의 시작 및/또는 끝에 있지 않다고 가정합니다.
$ awk -F'(\",)' '{print $1 $2 $17}' test.txt
그냥 확인하세요탈출하다셸을 보호하려면 작은따옴표 안에 따옴표와 주변 필드 구분 기호를 넣으세요.
노트gawk
나는 이것이 Fedora 20에서 사용된다고 생각합니다.