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
}'
差はミリ秒単位で印刷されますが、データファイルがないためテストされませんでした。