Правильный синтаксис, чтобы запустить это как сценарий sed - PullRequest
0 голосов
/ 05 июня 2018

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)
...