cus.txtファイルからいくつかのデータをフィルタリングするために、いくつかのLINUXコードを開発しています。以下、私はあなたがすべてのは、4番目の列に単語を「拒否」満たしている場合 が、それは名前欄に名前を確認し、それを次の「合格」の行をフィルタする必要があり、である必要がある。ここLINUXコマンドで特定の期間にデータ行を取得します。
12/3/2017 13:25:16 SAM reject
12/3/2017 13:25:26 NEEL pass
12/3/2017 13:25:58 SAM pass
12/3/2017 14:55:11 COOK pass
12/13/2017 21:25:45 ANDRUE pass
12/15/2017 23:46:31 FLINTOF pass
12/19/2017 16:25:51 KEVIN pass
12/20/2017 13:15:35 JHON reject
12/20/2017 13:15:25 ADEM pass
12/20/2017 13:15:51 JHON pass
12/22/2017 15:39:09 KEVIN pass
12/25/2017 19:25:28 SIMON reject
12/25/2017 19:25:31 JHON pass
12/25/2017 19:25:38 COOK pass
12/25/2017 19:25:50 SIMON pass
12/26/2017 22:19:20 SAM pass
12/27/2017 20:12:55 KEVIN pass
テキスト形式のテーブルを示してい時間の30秒以内の名前。私のlinuxコードを以下に示します。
awk 'function get_time(d_str){ split(d_str, d, /[/:[:space:]]/);
return mktime(sprintf("%d %d %d %d %d %d",d[3],d[1],d[2],d[4],d[5],d[6])) }$5=="pass" && status=="reject" &&
(get_time(prev_date)-get_time($1" "$2))<=30;{ prev_date=$1" "$2;
status=$5 }' cus.txt
このコードでは、以下の結果をフィルタリングできます。それは私が必要なものではありません。上記
私の必要な結果ではありません。
元のコードをhttps://stackoverflow.com/questions/47680769/filter-with-the-time-in-linux/47681444#47681444から変更しました。ここで、「ステータス」フィールドは「$ 4」 – RomanPerekhrest