Shell-Script

如何刪除以特定單詞開頭並以特定單詞結尾的行

  • September 29, 2015

例如:

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 ;

正如您在上面的範例中看到的那樣。我想刪除以 word 開頭的行,ALTER直到它以特定模式結束,;然後在另一個文件中列印刪除的行。

您可以sed用於這兩個任務。它支持所謂的“地址”,可以是正則表達式:

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

引用自:https://unix.stackexchange.com/questions/232682