私は現在、csv ファイルを処理するスクリプトに取り組んでおり、途中でそれらの特定の側面を修正しています。それが行うことの 1 つは、必要に応じて正しい時刻形式です。2 種類の変換が行われます。
xx:xx:xx to PTxxHxxMxxS
10:03:45 to PT10H03M45S
プロセスを高速化するためにsedまたはawkを使用してそれを行う方法を見つけようとしていますが、次の方法を使用してこれを行うことができました(以下を参照)。実際の変換プロセスに加えて、行われた変更のカウントも保持したいと思います (つまり、4 回の値が変換され、カウンターが 4 にインクリメントされるとします)。これは、if で簡単に行うことができました。 sed/awk を使用してそれを行うことについてはあまり知りませんが、以下のステートメント (表示されていません)。
istimef=$( echo "$Sfcpp6" | grep ".*:.*:.*" )
if [ "$istimef" != "" ]; then
hs=$( echo "$Sfcpp6" | cut -d ':' -f 1 )
mn=$( echo "$Sfcpp6" | cut -d ':' -f 2 )
sc=$( echo "$Sfcpp6" | cut -d ':' -f 3 )
Sfcpp6=$( echo "PT"$hs"H"$mn"M"$sc"S" )
echo "$Sfcp6"
fi
これは基本的に時間値がそこにあるかどうかをチェックし、変換を実行します。