한 없이,, /code> PERL< code> < 함께 머시닝할 에이아이엑스 데릭쉐퍼드와 필터링하려면 기록이 있을 경우 id 와 동일한 것으로 간주됩니다 중복됨 마치 레지스터링 사이에 4 시간 동안.
내가 이 필터를 사용하여, AWK< /code> code> 구현됩니까 <;; 하지만, 일을 잘 할 수 있는 솔루션을 데릭쉐퍼드와 훨씬 빠릅니다.
< pre>;
awk & # 39, {시작합니다. FS = " "; } /OK/ { 이전 = f ($8], [$8] f ($8] = 마크 티메 ($4, 5, $ $ $ $ $2, 3, 6, 7). x ($8] ++. } /OK/ & &; [$8], 1 개 > & &; f ($8] - [$8] < 이전. 14400 { 0 달러, 인쇄하십시오. } 함수은 마크 티메 (y-축 m,d, hh, mm, 친위대 (ss) { ss 반품하십시오 + (mm6 ) + (hh360 ) + (d8640 ) + (m259200 ) + (y3153600 ); } & # 39. 테이비그리피레스테스트 < /pre>;
제안 사항을? 발생합니까 환경을 개선할 수 있는 방법 (파일 또는 섬팅 그렇게 미리 로드)?
Input 파일이 이미 정렬할지.
< pre>; awk & # 39, {시작합니다. FS = " ";; 체스페르미노티 = 60; 체스페로어 = 3600. 체스페르데 = 86400. 스플릿 (" 0 31 151 212 243 273,, 304 334" 데스트로몬트 " 90 181 (59) 120 "). 1096년 1461년 1827년 2192 분할합니다 (" 0 366 731 2557 2922 3288 3653 4749 5114 5479 8 4383 5844 6210 65 75 6940 7305" 데스트로이어 401, "; "). } /OK/ { 이전 = f ($8], [$8] f ($8] = 마크 티메 ($4, 5, $ $ $ $ $2, 3, 6, 7). x ($8] ++. } /OK/ & &; [$8], 1 개 > & &; f ($8] - [$8] < 이전. 14400 { 0 달러, 인쇄하십시오. } 함수은 마크 티메 (y-축 m,d, hh, mm, 친위대 (ss) { d2m = 데스트로몬트 [int (m)]; if ((m >. 2) & &; 4% (((y = 0) & &; (y 100 %400%! = 0)) (y = 0))) {
실제 이 sounds like a job for 데이터베이스. 심지어 같은 뭔가 도움이 될 수 있습니다 여기서 잘 SQLite 합니다. 내가 보고 큰 문제를 해결할 수 있으며, 정의, 내 4 hours" ". # 39 의 that& 슬라이딩 윈도우 문제, 즉, 모든 데이터를 단순히 can& t # 39 ~ 4 시간 세그먼트만 양자화할 수 있습니다. 모든 ", nearby" 계산할 수 있습니다. 모든 요소가 다른 요소를 샀다. 윽.
입력 파일을 어떻게 부여됩니까 정렬할지? 파일, 또는 특정 필드 고양이 같은 단일 또는 다중 필드용 정렬할지 정렬하려면 통해? 만약 어떤 필드를 여러 필드, 그리고 어떤 순서로? 12 시 필드 () 는 24 시간 시계 보인다 아닌 거 맞죠? 모두 날짜 / 시간 필드용 푹신한 제로 (다시그것들을 9am " 오더할 9"; 또는 " 09";?)
성능 고려하지 않고 마치 모든 월 30 일 이후 한 달 코드에 문제가 경계를 간주합니다. 시행하십시오 2008-05-31/12:00:00 두 날짜 및 06 01 00 00 2008 12. 그러나 이들은 모두 24 시간 간격으로 코드에 대한 코드를 생산하는 동시에 (63339969600))
I think you leap 금지되나니 고려해야 할 것이다. # 39, 수학 t didn& 하지만 난 내가 할 수 있는 동안, 하드 코드 28 일간 윤년 비교한 결과 2월 정오부터 2/29 및 정오부터 3/1 이전과 같은 복제본임을 타임스탬프에 것이다. 비록 didn& 것처럼 보이는데, t # 39 구현하십시오 it like that. 그들은 아직 생각해 보니 구현됩니까 방식에 문제가 있지만, s # 39 의 달러 사이의 날짜 및 1/1 it& 12/31 레이피어 레이피어 달러 + 1).
내 생각엔 충돌이 있을 수도 있습니다) 가 변경되더라도 시간에 처리할 수 있는 시간대에 코드에서 처리해야.
키 작은 수에 비례하여 복제본임을 경우 총 선, awk 스크립트를 통해 최상의 bet 는 파일 너회의 작동됨 줄일 수 있는 것 같아 그냥 복제본임을 키 (이를 [데이비드 기도하였나니] [1]). 따라서 선만 χ02 오른길로 프레프록스 수도 있습니다 파일 / 확인 / 흐름선. 이 첫 번째 awk 와 있는 것 같아 해야한다고 파이프라인간의 스크립트만 인쇄, 두 번째 awk 스크립트를 시작하는 줄은 중복 id 는 기본적으로 최적화합니다 찾을 수 없는 것이 바로 위의 / 와 / 확인 알고 있는 모든 주요 χ02 중복 세그먼트입니다 키.
미리 알고 있으면 키를 가지고 있는 모든 또는 가장 줄은 반복된 it& # 39 의 가치가 있는 메싱 없는듯. # 39 의 c, d 는 i& 바이트 코드 행 비해 훨씬 더 빠르게, 더 쓸 글머리표 및 세제곱밀리미터 awk 스크립트입니다.
[1]: https://stackoverflow.com/questions/6475/faster-way-to-find-duplicates-conditioned-by-time # 6813
대부분의 운릭센 정렬하려면 정렬하려면 특정 열 또는 필드이므로 얻을 수 있습니다. 따라서 정렬하여 의해 그 파일에 의해 다음 ID, 날짜, 더 이상 유지하는 데 필요한 경우 각 ID 를 마지막으로 본 전혀 연관 배열. 그 모든 컨텍스트로 파일의 주문하십시오 있다.
On my Mac, 디스크입니다. diskid GNU 정렬, it& # 39, s:
sort -k 8 < input.txt > output.txt
정렬하려면 ID 의 현장. 두 번째 필드는 정렬할 수 있습니다 (에드그) 뿐 아니라 너무 것 "이라고 말해 8.3 2 보다 작은 자연수이다. Time_t 않을 수 있기 때문에 유닉스 스타일 시간스탬프와 파일의 나쁜 아이디어, 그리고 그 모든 절약해줍니다 it& - # 39 의 쉽냐구요 정렬하려면 날짜 계산. 또한, (적어도 GNU awk 의 다시), 그곳에 당신꺼에요 time_t 는 마크 티메 함수은 주는 요소를.
@ [앤더하위] [1], 생각해봤죠 전체 전처리 및 유니크 수행됨 정렬하려면 함께 할 수 있다. 문제는 OP& # 39 의 데이터, 쉼표로 구분된 것으로 보인다 (solris 8& # 39, s) 과 유니크 doesn& # 39, t, t # 39 때문에 따로 지정할 수 있는 어떤 방식으로든 분리자의 기록하십시오 wasn& 수퍼 청소하십시오 전처리 방법으로 사용하는 표준 유닉스 툴과도. # 39, 나는 모든 것이 빠르게, 그래서 I& don& 것 같지는 않다 # 39 m not going 조회할 수 있지만, 다음과 같은 항목을 할 수 있는 정확한 옵션
cut -d, -f8 <infile.txt | sort | uniq -d | xargs -i grep {} infile.txt >outfile.txt
[1]: https://stackoverflow.com/questions/6475/faster-way-to-find-duplicates-conditioned-by-time # 7210