Probably the easiest way is to simply run commands directly against the Oracle data dictionary tables themselves, rather than trying to parse SQL files containing create statements.
For example, to get all the tables in schema X, you can do:
SELECT table_name FROM all_tables WHERE owner = 'X'
To get all the columns for table "T", owner of "U", you can do:
SELECT column_name FROM all_tab_columns WHERE table_name = 'T' AND owner = 'U'
Full example
Here is a complete example that will allow you to return all tables and their columns for all tables owned by the "owner". This can be done with a single SQL statement:
SELECT t.table_name
, c.column_name
FROM all_tables t
, all_tab_columns c
WHERE t.TABLE_NAME = c.TABLE_NAME
AND t.OWNER = c.OWNER
AND t.OWNER = 'owner'
ORDER BY t.TABLE_NAME
, c.COLUMN_NAME
Word, , , Word, . , sql*plus (.. spool file.txt sql*plus) SQL. .