.csvファイルの特定の列で日付を個別にフィルタリングし、出力を別のcsvファイルに保存するシェルスクリプト

.csvファイルの特定の列で日付を個別にフィルタリングし、出力を別のcsvファイルに保存するシェルスクリプト

7/20/2017 17:00たとえば、6番目の列にリストされている日付形式の.csvファイルを考えてみましょう。

入力を指定したら、一致する入力7/11/2017日付で列をフィルタリングし、出力を別の.csvファイルに保存する必要があります。

与えられた入力に基づいて6番目の列をフィルタリングするコマンドが必要です。

file.csvには次のエントリがあります。

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

同様に、6番目の列には複数の日付と時刻の形式の項目があります。実行時に入力(読み取りなど)が与えられたら、7/20/2017列6の日付をフィルタリングし、出力項目を別の.csvファイルに保存する必要があります。

答え1

簡単にアッ:

awk -F, -v d="7/20/2017" '$6~d' input.csv > dates.csv

コンテンツdates.csv:

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

日付値がシェル変数から来る場合:

d="7/20/2017"
awk -F, -v d="$d" '$6~d' input.csv > dates.csv

答え2

次の形式の日付を含む列が1つしかないとします。

$ grep -F '7/20/2017' file.csv
23,54,one,tree,56,7/20/2017 17:00,23,iii,89
23,54,one,tree,56,7/20/2017 17:00,23,iii,89

新しいファイルにリダイレクトできます。

$ grep -F '7/20/2017' file.csv >new.csv

CSVファイルを正しく解析するには、組み込みのCSVパーサーを使用してください。CSVkitツール:

$ csvgrep -c 6 -m '7/20/2017' file.csv
23,54,one,tree,56,7/20/2017 17:00,23,iii,89
23,54,one,tree,56,7/20/2017 17:00,23,iii,89

関連情報