명령 행 유틸리티를 사용하여 UNIX에서 XML, JSON 및 최신 데이터 파일 형식 구문 분석


9

유닉스 환경에는 다양한 형태의 텍스트를 파싱하기위한 훌륭한 툴이 있습니다. 그러나 최근에 데이터는 이전에 사용되었던 기존 (역사적) 형식 (CSV, TSV, 레코드 기반 또는 기타 구분자 기반)이 아닙니다. 요즘의 데이터는 XML / JSON과 같은 구조화 된 형식으로 교환됩니다.

나는 sed, awk 및 Perl과 같은 좋은 도구가 있다는 것을 알고 거의 모든 형태의 데이터를 씹을 수 있습니다. 그러나 이런 종류의 구조화 된 데이터로 작업하려면 종종 완전한 프로그램을 작성해야하며 정보를 추출 할 수있는 시간이 부족한 경우에는 앉아서 쿼리하고 싶은 대상의 전체 논리를 파악해야합니다. 프로그래밍 방식으로 다운됩니다. 기본적으로 해당 파일에서 추출 된 정보는 추가 작업을위한 입력 역할을하기 때문에 때때로 이것은 좋지 않습니다. 또한 적절한 솔루션을 검색하고 코딩하는 데 시간이 걸리기 때문입니다. 데이터를 찾고 쿼리하고 덤프하기에 충분한 스위치가있는 명령 행 도구가 필요합니다.

XML / JSON 또는 다른 형태의 구조화 된 데이터를 가져와 csv 등과 같은 다른 형식으로 덤프하는 도구를 찾고 있으므로 다른 명령을 사용하여 정보를 가져올 수 있습니다.

이러한 종류의 작업을 수행하는 명령 줄 유틸리티가 있습니까? 이미 사용 가능한 awk / Perl 스크립트가 있습니까?

답변:


5

xml의 ​​경우 http://xmlstar.sourceforge.net/

XMLStarlet은 일련의 명령 행 유틸리티 (도구)로, UNIX grep, sed, awk, diff, patch, join 등의 명령.

xsltproc유사한 도구 ( saxon) 를 사용할 수도 있습니다 .

json의 경우 : 파이썬, 루비, 펄을 사용하고 변환하는 것이 더 좋습니다.


jq쉘에서 JSON을 파싱하기위한 좋은 툴이다 : stedolan.github.io/jq
Kusalananda

4

Perl, Python 또는 Ruby 모듈을 성공적으로 사용할 수 있다고 생각합니다. 그리고 이것들 중 어느 것도 스크립팅에 사용될 수 있습니다.


내 요점은 스크립트 작성을 피하고 대신 명령을 사용하여 시도하는 것이 었습니다. 스크립트를 작성하면이 질문의 전체 목적을 무효화 할 수 있습니다.
kamaal

ruby -e 'program text'"스크립트 작성" 을 고려하십니까 ?
alex

나는 당신을 제대로 이해하지 못했다고 생각합니다. '프로그램 텍스트'는 어디서 구할 수 있습니까?
kamaal

@kamaal : 던노. 구글? 선택한 스크립팅 언어에 대한 문서? Perl을 사용하는 경우 CPAN이 떠 오릅니다.
alex

@kamaal : 데이터 형식이 더 정교 해짐에 따라 수행 할 작업에 대한 설명이 길어집니다. 예를 들어 perl -0777 -MJSON -e '$t=from_json(<STDIN>); do_something_with($t)'최소한의 혼란으로 JSON을 처리 할 수 ​​있습니다. 어떻게 든 컴퓨터로 데이터를 어떻게 처리해야하는지 알려야합니다.
Gilles 'SO- 악의를 멈춰라'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.