カンマを区切り文字として値を区切る方法

カンマを区切り文字として値を区切る方法

「,」で区切られた値を分離するコードがありますが、「to_date」の部分に問題があります。これを実現する方法について何かアイデアはありますか。

入力

8363892,14932126,24,'ALL','Staff',to_date('04/17/2017 00:00:00','MM/DD/YYYY) HH24:MI:SS'),to_date('05/24/2017 23:59:59','MM/DD/YYYY HH24:MI:SS'

出力

8363892  
14932126  
24  
'ALL'  
'Staff'  
to_date('04/17/2017 00:00:00','MM/DD/YYYY) HH24:MI:SS')  
to_date('05/24/2017 23:59:59','MM/DD/YYYY HH24:MI:SS')  

答え1

唯一の「偽」の正値が時間と MM/DD/YYYY 文字列の間にある場合は、そのカンマを別の文字に変換してから、残りのカンマを復帰改行で変更することができます。つまり、次のようになります。

echo "8363892,14932126,24,'ALL','Staff',to_date('04/17/2017 00:00:00','MM/DD/YYYY) HH24:MI:SS'),to_date('05/24/2017 23:59:59','MM/DD/YYYY HH24:MI:SS'" | sed -e "s/','MM/';'MM/g" | tr ',' '\n'

その後の変更を元に戻したい場合は、次の手順を実行します。

echo "8363892,14932126,24,'ALL','Staff',to_date('04/17/2017 00:00:00','MM/DD/YYYY) HH24:MI:SS'),to_date('05/24/2017 23:59:59','MM/DD/YYYY HH24:MI:SS'" |
sed -e "s/','MM/';'MM/g" |
tr ',' '\n' | 
sed -e "s/';'MM/','MM/g"

関連情報