いくつかのSQLを含むファイルがあり、シェルスクリプトを使用して変換するフィールドを見つけたいと思います。
たとえば、次のSQLを含むabc.txtファイルがあります。
SELECT field1,field2,field3,field4,cast(field5 を整数に),cast(substr(field6,5,10) を整数に),(field7 = '0000/00/00' の場合 Cast(field7 を日付に) )else(field8は日付)end)はfield7、substr(field9、5、10)FROM TEMPです。
希望の出力:
フィールド5
フィールド6
フィールド7
ベストアンサー1
どうですか?
awk 'BEGIN{FS="cast\\(";OFS="\n\n"}{ for(i = 1; i <= NF; i++) { sub("[ ),].*","",$i);gsub("^.*\\(","",$i) } {$1=""; print}}'
ソリューションは、すべての行の "cast(") インスタンスを繰り返し、プレフィックスとサフィックスを削除します。