sed를 사용하여 값 목록의 구성원을 검색하는 방법

user7947

적절하게 질문하는 방법을 잘 모르겠지만 사용 사례는 다음과 같습니다.

  • ~ 18GB XML 파일 (OpenStreetMap)이 있습니다. ~ 2 억 5 천만 라인
  • 파일에 데이터 세트를 손상시키는 ~ 250 개의 잘못된 항목이 있습니다.
  • 제거 할 항목은 여러 줄이며 다음과 같은 형식입니다. <way id="foo">... <\way>
  • 파일에 해당 ID가 있습니다. bad_ways

for 루프를 sed작성하고 다음과 같은 명령문을 순환 할 수 있습니다 .

sed -i.bu '/<way id="1_bad_way_entry".*/,/<\/way>/d' in.xml

하지만 ... 이것은 18G 파일 및 관련 디스크 쓰기 등을 통해 ~ 250 사이클을 필요로합니다. 현재는 사이클 당 약 18 분이 걸립니다 (디스크 회전 ...이 문제는 곧 기계를 전환하여 해결됩니다. 업데이트 : SSD는 약 6.5로 개선됩니다. 최소주기).

모든 항목 sed을 일치 시키고 1 패스로 수행 하도록 요청할 있는 방법 이 있습니까?bad_ways

아니면 이것보다 더 나은 도구가 sed있습니까? 미리 감사드립니다!

Enlico

명령 대체를 사용 sed하여 실행시 스크립트 를 어셈블 할 수 있습니다 .

(참고 : 다음 에서는 백 슬래시를 저장하기 위해 sed-E옵션을 사용 sed합니다. 필요에 따라 백 슬래시를 포함하여 스크립트 를 생성 할 필요가 없습니다 .)

예를 들어, bad_ways파일이 다음과 같다고 가정합니다 .

one
two
three

다음과 huge_file같습니다.

everything starts with a zero, then one is next, then two, then three, finally four

당신은에있는 모든 패턴을 대체 할 다음 명령을 사용하여 작업을 수행 할 수 bad_ways와를 XXX:

sed -E 's/'"$(sed -zE 's/\n([^$])/|\1/g' bad_ways)"'/XXX/g' huge_file

그런 다음 출력은

everything starts with a zero, then XXX is next, then XXX, then XXX, finally four

보시다시피 sed에서 작동 하는 스크립트는 huge_file세 개의 문자열을 연결하여 구성됩니다.

  1. s/ 작은 따옴표로 묶습니다 (2에서와 같이 큰 따옴표가 필요하지 않으면 항상 작은 따옴표를 선호해야합니다.)
  2. sed -zE 's/\n([^$])/|\1/g' bad_ways명령 대체를 허용하기 위해 큰 따옴표로 묶여 있고 생성되는 의 출력one|two|three
  3. /XXX/g.

이 모든 결과는 문자열이 s/one|two|three/XXX/g됩니다.

이 명확하게 당신이 당신의 스크립트 필요로하는 문자열이 아닌,하지만 난이 답변 쇼 당신의 예를 바란다 명령 치환을 사용하는 방법 $(…)과 함께 인용 적절한 '"명령 (만드는 법 sed, awk동적이든 뭐든) .

돌이켜 보면이 답변은 댓글에 연결된 답변의 것과 동일한 "철학"을 기반으로합니다. 그러나 스크립트를 파일에 임시로 저장하는 것은 아닙니다. 스크립트 자체가 작은 경우 (그리고 설명에 따라 작은 경우) 이는 중요하지 않을 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

스칼라의 구성에서 맵 목록 값을 비교하여 키를 검색하는 방법

분류에서Dev

값 목록에서 값을 검색하여 사전의 키를 인쇄하는 방법

분류에서Dev

pymongo를 사용하여 na 배열 내부의 값을 검색하는 방법

분류에서Dev

재귀 기법을 사용하여 값 X가 목록 L의 구성원인지 확인하는 방법

분류에서Dev

여러 값을 검색하는 데 사용되는 다른 df의 색인 값을 사용하여 새 df를 작성하는 방법은 무엇입니까?

분류에서Dev

범위 값을 사용하여 다차원 배열의 데이터를 검색하는 방법

분류에서Dev

JavaScript를 사용하여 목록 항목 제목을 검색하는 방법

분류에서Dev

반복기를 사용하여 목록의 값을 대체하는 방법 (Java)

분류에서Dev

검색 문 JSP를 통해 드롭 다운 목록을 사용하여 mysql에서 값을 검색하는 방법은 무엇입니까?

분류에서Dev

Linq를 사용하여 문자열 내의 목록 항목을 검색하는 방법

분류에서Dev

Linq를 사용하여 다른 목록의 값으로 목록을 정렬하는 방법

분류에서Dev

jquery를 사용하여 ul li 목록 값을 얻는 방법

분류에서Dev

자바 스크립트를 사용하여 HTML <a> 태그의 값을 검색하는 방법 (jquery 없음)

분류에서Dev

SQL Server : HASHBYTES를 사용하여 암호화 된 암호의 실제 값을 검색하는 방법

분류에서Dev

awk 및 sed를 사용하여 JSON 파일의 목록을 읽는 방법

분류에서Dev

Keycloak API를 사용하여 그룹의 구성원 수를 검색하는 방법이 있습니까?

분류에서Dev

XMLDog를 사용하여 xml 파일에서 값을 검색하는 방법

분류에서Dev

jQuery를 사용하여 테이블 td 값을 검색하는 방법

분류에서Dev

DictionarySectionHandler를 사용하여 Web.Config에서 키 값을 검색하는 방법

분류에서Dev

contextMenu를 사용하여 목록보기에서 항목의 다른 활동에 값을 전달하는 방법

분류에서Dev

RDD의 다른 속성 값을 사용하여 속성 값을 검색하는 방법

분류에서Dev

LINQ를 사용하여 다른 목록에 가장 많은 구성원이있는 목록의 모든 항목을 찾는 방법은 무엇입니까?

분류에서Dev

Linq를 사용하여 하위 항목을 검색하는 방법

분류에서Dev

사전 이해를 사용하여 목록에서 사전의 값을 만들고 증가시키는 방법

분류에서Dev

sed를 사용하여 파일에서 여러 줄을 검색하는 방법

분류에서Dev

sed를 사용하여 JSON 값을 문자로 묶는 방법

분류에서Dev

C #의 Linq를 사용하여 다른 목록의 값을 비교하여 목록을 필터링하는 방법은 무엇입니까?

분류에서Dev

jsoncpp를 사용하여 목록의 특정 값을 txt에 저장하는 방법은 무엇입니까?

분류에서Dev

XSD를 사용하여 목록 1 값에서 목록을 요구하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    스칼라의 구성에서 맵 목록 값을 비교하여 키를 검색하는 방법

  2. 2

    값 목록에서 값을 검색하여 사전의 키를 인쇄하는 방법

  3. 3

    pymongo를 사용하여 na 배열 내부의 값을 검색하는 방법

  4. 4

    재귀 기법을 사용하여 값 X가 목록 L의 구성원인지 확인하는 방법

  5. 5

    여러 값을 검색하는 데 사용되는 다른 df의 색인 값을 사용하여 새 df를 작성하는 방법은 무엇입니까?

  6. 6

    범위 값을 사용하여 다차원 배열의 데이터를 검색하는 방법

  7. 7

    JavaScript를 사용하여 목록 항목 제목을 검색하는 방법

  8. 8

    반복기를 사용하여 목록의 값을 대체하는 방법 (Java)

  9. 9

    검색 문 JSP를 통해 드롭 다운 목록을 사용하여 mysql에서 값을 검색하는 방법은 무엇입니까?

  10. 10

    Linq를 사용하여 문자열 내의 목록 항목을 검색하는 방법

  11. 11

    Linq를 사용하여 다른 목록의 값으로 목록을 정렬하는 방법

  12. 12

    jquery를 사용하여 ul li 목록 값을 얻는 방법

  13. 13

    자바 스크립트를 사용하여 HTML <a> 태그의 값을 검색하는 방법 (jquery 없음)

  14. 14

    SQL Server : HASHBYTES를 사용하여 암호화 된 암호의 실제 값을 검색하는 방법

  15. 15

    awk 및 sed를 사용하여 JSON 파일의 목록을 읽는 방법

  16. 16

    Keycloak API를 사용하여 그룹의 구성원 수를 검색하는 방법이 있습니까?

  17. 17

    XMLDog를 사용하여 xml 파일에서 값을 검색하는 방법

  18. 18

    jQuery를 사용하여 테이블 td 값을 검색하는 방법

  19. 19

    DictionarySectionHandler를 사용하여 Web.Config에서 키 값을 검색하는 방법

  20. 20

    contextMenu를 사용하여 목록보기에서 항목의 다른 활동에 값을 전달하는 방법

  21. 21

    RDD의 다른 속성 값을 사용하여 속성 값을 검색하는 방법

  22. 22

    LINQ를 사용하여 다른 목록에 가장 많은 구성원이있는 목록의 모든 항목을 찾는 방법은 무엇입니까?

  23. 23

    Linq를 사용하여 하위 항목을 검색하는 방법

  24. 24

    사전 이해를 사용하여 목록에서 사전의 값을 만들고 증가시키는 방법

  25. 25

    sed를 사용하여 파일에서 여러 줄을 검색하는 방법

  26. 26

    sed를 사용하여 JSON 값을 문자로 묶는 방법

  27. 27

    C #의 Linq를 사용하여 다른 목록의 값을 비교하여 목록을 필터링하는 방법은 무엇입니까?

  28. 28

    jsoncpp를 사용하여 목록의 특정 값을 txt에 저장하는 방법은 무엇입니까?

  29. 29

    XSD를 사용하여 목록 1 값에서 목록을 요구하는 방법은 무엇입니까?

뜨겁다태그

보관