Sed ниже работает с командной строкой и выполняет следующие действия:
sed -n '/CREATE EXTERNAL/,/^[)]/{/^[()]/d;p}' ddl.txt
Печатать все строки между строками, содержащими CREATE EXTERNAL и), кроме тех, которые начинаются с (или) из файла ddl.txt
Как вы можете заметить, исключение для строк, начинающихся (или), обрабатывается как встроенный адрес, строки, соответствующие ему, удаляются при обнаружении.
Все попытки, которые я предпринял, чтобы поместить это в файлэто может быть запущено с помощью sed -f не удалось.Я был бы признателен, если бы кто-нибудь показал мне правильный синтаксис.
Вот некоторые тестовые данные
CREATE EXTERNAL TABLE foo.bar
(
mykey INT,
mydata VARCHAR(20),
lastfield VARCHAR(20)
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\137'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
, которые должны дать
CREATE EXTERNAL TABLE foo.bar
mykey INT,
mydata VARCHAR(20),
lastfield VARCHAR(20)