csvファイルの特定の列(最後の3番目の列)から日付をフィルタリングします。また、最後の3番目の列が空の場合は、次の行を印刷します。

csvファイルの特定の列(最後の3番目の列)から日付をフィルタリングします。また、最後の3番目の列が空の場合は、次の行を印刷します。

入力csvファイルは次のとおりです。

23,54,one,tree,56,23,7/20/2017 17:00,iii,89
23,54,one,tree,56,23,7/20/2017 17:00,iii,89
23,54,one,tree,56,23,7/21/2017 17:00,iii,89
23,54,one,tree,56,23,7/30/2017 17:00,iii,89

現在の日付を取得するにはシェルコマンドが必要ですフォーマットして7/20/2017から、csvファイルの3番目の列から最後の列まで同じ日付を使用してフィルタリングします(列は最初の列から検出しないでください。そうしないと、カンマによって違いが発生するため、3番目の列から最後の列列まで始める必要があります)。

ベストアンサー1

awk -F, -v "today=$(date "+%m/%d/%Y" | sed 's/^0//')" '$(NF-2) ~ "^"today' file

sedの使用が不便な場合は、日付のマニュアルページをよくお読みください。

awk -F, -v "today=$(date "+%-m/%d/%Y")" '$(NF-2) ~ "^"today' file
# .........................^^^

最後の列の 3 番目の列が空の場合、または「今日」の場合

awk -F, -v "today=$(date "+%-m/%d/%Y")" '$(NF-2) == "" || $(NF-2) ~ "^"today' file

おすすめ記事