Delete all lines without a trailing semi colon

shell : bash
os : RHEL 7.2

I have a file like below

61265388
1-11Y5C-7690
1-11Y4Q-6763
INSERT INTO emp VALUES('oramds:test.xref','CBS_01','MIGWO161265388','61265388','N',SYSDATE);

INSERT INTO emp VALUES('oramds:test.xref','COMMON','MIGWO161265388','MIG1COMMON61265388','N',SYSDATE);
INSERT INTO emp VALUES('oramds:test.xref','SEBL_01','MIGWO161265388','1-11Y5C-7690','N',SYSDATE);

I want to remove all lines (including blank lines) without a trailing semi colon. Any idea how I could do this preferably in sed/awk ?

expected output

INSERT INTO emp VALUES('oramds:test.xref','CBS_01','MIGWO161265388','61265388','N',SYSDATE);
INSERT INTO emp VALUES('oramds:test.xref','COMMON','MIGWO161265388','MIG1COMMON61265388','N',SYSDATE);
INSERT INTO emp VALUES('oramds:test.xref','SEBL_01','MIGWO161265388','1-11Y5C-7690','N',SYSDATE);

Any attempts / ideas / thoughts from your side?

Assuming your input is in a file called file.txt:

sed -n '/;$/p' file.txt

Or with grep:

grep  ';$' file.txt

Andrew

1 Like

Or:

awk '/;$/' file

or

sed '/;$/!d' file
1 Like