
データベースからファイルをインポートするためにシェルスクリプトを使用しています。シェルスクリプトを実行した後のデータは次のとおりです。パイプで区切られたデータファイル。
4676004||2017-09-2900:00:00|13222|0|XYZ|TTTTT||1855467|S|14671
スプールを使用してファイルを生成した後にデータ型を指定するために実行したコマンドは、次のとおりです。
sed -i -E 's/[[:blank:]]+(||$)/\1/g' Test.txt.
しかし問題は日付データ
2017-09-2900:00:00
、これが必要です。2017-09-29 00:00:00
日付と時刻の間にスペースが必要です。どうすればいいですか?
答え1
ただします。
sed 's/....-..-../& /' infile
xxxx-xx-xx
常にフォーマットに一致するパターンがあるとします。
または、まずSQLで操作を実行するようにsubstr
コマンドに指示する必要があります。select
select ... '|' || substr(mydate,1,10) || subtsr(mydate,11,8) || '|' ...
答え2
$ sed -E 's/([0-9]{2})([0-9]{2}):/\1 \2:/' file
4676004||2017-09-29 00:00:00|13222|0|XYZ|TTTTT||1855467|S|14671
これは、入力行の4桁の前にaが現れる唯一の位置が:
日付文字列にあると想定します。sed
スペースで区切られた2つの数字の2つのセットを置き換えます。