私は例えば、日付形式の文字列( "のstrftime" 形式)を受け入れるように私ののbashスクリプトが必要:チェックすると、文字列の一致指定された日付のような形式
< < [%Y-%M- %D%H:%のM:%のS] >>
その後、私の入力ファイル内のデータ(左値)は、この与えられた文字列かと一致するかどうかを確認します。
書式文字列を:< < [%Y-%M-%D%H:%M:%S] >>
データファイル:
< < [2017年5月4日夜2時49分18秒] >> 12.1 - 有効
< [2017年5月4日14時49分18秒]> -1421 - 無効
< <を[2017年5月4日14時49分18秒] >> 1231231.02 - 無効
入力ファイルには多くの行があり、私が思いついたのはPythonを使用している点だけです。
function check_time_format() {
python -c "import time;
time.strptime(\"$1\",\"$2\")" 2> /dev/null
}
while read -r lvalue rvalue; do
check_time_format "$lvalue" "$TIMEFORMAT"
[[ $? != 0 ]] && echo "Invalid format..."
done < "$file"
それは動作しますが、もちろん、非常に遅いです。これを行うためのより良い方法はありますか?おそらく簡単ですか?
ありがとうございました!
代わりに、 'date --date = [my_string]'コマンドを使ってタイムスタンプを解析することができます。日付を解析できない場合はゼロ以外を返し、そうでない場合はフォーマットされた日付を返します。 – amphetamachine
任意の文字を含む文字列を使用する必要があります(例:blabla%Y:%Mblabla)。あなたのソリューションは、私が思うように達成するのを助けません。 – PesaThe