たとえば、
CREATE TABLE MWWDATA."VTCat02" (
"ID" NUMBER(10) DEFAULT NULL ,
"Cat" VARCHAR2(255) DEFAULT NULL ,
"Style_Code" VARCHAR2(255) DEFAULT NULL ,
"Vendor_Style_#" VARCHAR2(255) DEFAULT NULL );
上記の例では、CREATE TABLEで始まる行を印刷し、残りの行では最初のフィールドのみを印刷しようとしています。
私はこの出力が欲しい
CREATE TABLE MWWDATA."VTCat02" ("ID","Cat","Style_code","Vendor_Style_#");
ベストアンサー1
そしてawk
:
awk '/^CREATE TABLE/{
inside = 1
sep = ""
printf "%s", $0
next
}
inside {
printf "%s", sep $1
sep = ","
if (/\);$/) {
print ");"
inside = 0
}
}'
CREATE TABLE
これは行の先頭から始まり、);
行の終わりで終わるステートメント(同じ行ではありません)に依存します。各列名は後続の行の最初のフィールドです(つまり、列名にスペースを含めることはできません)。 。