Como apagar as linhas que começam com uma palavra específica e terminam com uma palavra específica

0

Por exemplo:

CREATE TABLE COMM.ACL_ENTRY (
        ACL_OID CHAR(18) FOR BIT DATA NOT NULL ,
        USER_DESC_TYPE FOR COLUMN USER_00001 BIGINT NOT NULL ,
        USER_DESC_OID FOR COLUMN USER_00002 VARGRAPHIC(220) CCSID 13488 NOT NULL ,
        ACTIONS BIGINT NOT NULL ,
        CONSTRAINT COMM.PK5111 PRIMARY KEY( ACL_OID , USER_DESC_OID ) )
        ;

ALTER TABLE COMMUN.ACL_ENTRY
        ADD CONSTRAINT COMM.FK5111A
        FOREIGN KEY( ACL_OID )
        REFERENCES COMM.ACL ( OID )
        ON DELETE CASCADE
        ON UPDATE NO ACTION ;

Como você pode ver no exemplo acima. Quero excluir as linhas que começam com a palavra ALTER até que ela termine com um padrão específico ; e imprima as linhas excluídas em outro arquivo.

    
por TOM 29.09.2015 / 09:41

1 resposta

1

Você pode usar sed para ambas as tarefas. Suporta os chamados "endereços", que podem ser expressões regulares:

sed -n -e '/^ALTER/,/;$/p' > another.file # Prints them,
sed -i~ -e '/^ALTER/,/;$/d'               # Deletes them.
    
por 29.09.2015 / 09:51