入力の最初の行にある場合は最初に一致し、その場合は行全体を印刷し、そうでない場合は最初の単語とコンマを印刷します。

入力の最初の行にある場合は最初に一致し、その場合は行全体を印刷し、そうでない場合は最初の単語とコンマを印刷します。

たとえば、

CREATE TABLE MWWDATA.ACK997 (
    AKTYPE CHAR(2) DEFAULT ''  NOT NULL ,
    AKNUM CHAR(9) DEFAULT ''  NOT NULL );

CREATE TABLE MWWDATA.APREIDEXC (
    EMPLID NUMBER(15, 0) DEFAULT NULL );

私が望む出力は次のとおりです。

CREATE TABLE MWWDATA.ACK997(AKTYPE,ANUM);
CREATE TABLE MWWDATA.APREIDEXC(EMPLID);

ベストアンサー1

これ方法

〜のようにほとんどの選択肢よりはるかに軽量で、別の解決策があります

sed -ne '
    /CREATE/{h;d};
    s/^ *\([^ ]\+\) .*\()\);\? *$/\1\2/;
    ta;
    s/^ *\([^ ]\+\) .*$/\1/;
    H;
    bb;
   :a;
    H;
    x;
    s/\n//;
    s/\n/,/g;
    s/ (/(/;p ;
   :b'

これは次のように書くことができます。

sed -ne '/CREATE/{h;d};s/^ *\([^ ]\+\) .*\()\);\? *$/\1\2/;ta;
    s/^ *\([^ ]\+\) .*$/\1/;H;bb;:a;H;x;s/\n//;s/\n/,/g;s/ (/(/;p ;:b'

これはあなたの例でレンダリングされます

CREATE TABLE MWWDATA.ACK997(AKTYPE,AKNUM)
CREATE TABLE MWWDATA.APREIDEXC(EMPLID)

おすすめ記事