100개의 열이 있는 쉼표로 구분된 파일이 있고 다음 명령을 사용하여 열 값을 기준으로 결과를 필터링하고 있습니다.
find . | xargs zgrep -i , | awk '{ FS = "," };{ if (( $3 == "8") && ($14=="1") ) {print $10""$8}}'
결과 열 10과 8의 일부로 다음 결과가 반환됩니다. 이는 기본적으로 밀리초 타임스탬프입니다. yyyymmddhhmmssmmm(+0900은 JST이며 항상 동일하게 유지됩니다. mmm은 밀리초의 3자리를 나타냅니다.)
20200428030351464+0900 -> column 10
20200428030351329+0900 -> column 8
이제 같은 줄에 차이점을 인쇄할 수 있는 방법이 있습니까? 거의 모든 경우에 차이는 분이 아니라 초와 밀리초 단위입니다. (이것이 단순화될 수 있다면.
답변1
내 코드는 다음과 같아야 한다고 생각합니다.
find . | xargs zgrep -i , |
awk 'BEGIN { FS="," }
$3 == 8 && $14 == 1 {
f10=substr($10,13,5);
f8=substr($8,13,5);
diff=f10-f8;
if (diff < 0) { diff+=60000 }
print diff
}'
차이를 밀리초 단위로 인쇄하지만 데이터 파일이 없기 때문에 테스트되지 않았습니다.