15 분마다 데이터가 저장되는 디렉토리를 나열하는 수천 개의 라인 파일이 있습니다. 각 디렉토리의 이름은 00, 15, 30 또는 45로 끝나는 시간 소인입니다.awk를 사용하여 행의 누락 된 필드를 찾습니다.
이 파일에는 15 분 간격의 각 시간 소인이 들어 있습니다. 예를 들어,
io_credit 2014030100 00 15 30 45
io_credit 2014030101 15 30
io_credit 2014030102 45
io_credit 2014030103 00 15 30 45
일부 타임 스탬프에는 일정한 15 분 간격이 없습니다. 타임 스탬프가없는 경우에도 타임 스탬프가 기록되는 순서는 항상 동일합니다. 따라서 15만이 누락 된 시간 소인이면 00, 30 및 45가 순서대로 표시됩니다. Sames는 다른 모든 타임 스탬프에도 적용됩니다. 즉 당신은 내가 밖으로 인쇄 각 타임 스탬프를 몇 가지 방법을 알아 내기 위해 AWK 고민했습니다과 그 타임 스탬프 간격 (들)없는
45 15 30
같은 것을 볼 수 없을거야 그래서. 다음은
는 난 단지 5 개의 필드를 포함하는 행을 위해 작성한 것입니다 :
cat file | awk '{if (NF == 5) for (i = 3; i <= 5; i++) { if (i == 3 && $i == "00") continue; else if (i == 3 && $i == "15") missing="00"; continue; if (i == 4 && $i == "15") continue; else if (i == 4 && $i == "30") missing=missing " 15"; if (i == 5 && $i == "30") missing=missing "45"; else missing=missing "30"; } {print $1,$2, missing }}'
그러나이 경우에만 인쇄 "00"및 (NF의 == 5) 규정과 일치하는 모든 행에 대해 아무것도.
내가 뭘 잘못하고 있니?
모든 데이터가 동일하게 보이도록하려면 논리의 이점은 무엇입니까? 그냥'awk '{print $ 1 ""$ 2 "00 15 30 45"}'file' 행운을 빈다. – shellter
아니요, 누락 된 기간에만 다른 위치의 데이터를 복사해야합니다. 그래서 각 타임 스탬프마다 누락 된 간격 목록이 필요합니다. 00, 15 및 45가 해당 타임 스탬프에있는 경우 전체 4 개가 아니라 30 개만 복사하려고합니다. – user3481957
설명과 코드에서 (최소한) 명확하지 않습니다. 샘플 입력에서 예상되는 출력으로 질문을 업데이트 할 수 있습니까? 행운을 빕니다. – shellter