正确的语法将其作为sed脚本运行

正确的语法将其作为sed脚本运行,sed,Sed,下面的sed在命令行上工作,并执行以下操作 sed -n '/CREATE EXTERNAL/,/^[)]/{/^[()]/d;p}' ddl.txt 打印包含CREATE EXTERNAL和(或)的行之间的所有行,但文件ddl.txt中以(或)开头的行除外 正如您可能注意到的,起始(或)行的异常作为嵌入地址处理,与之匹配的行在遇到时将被删除 我试图将其放入一个可以使用sed-f运行的文件中的所有尝试都失败了。如果有人能告诉我正确的语法,我将不胜感激 下面是一些测试数据 CREATE EXTE

下面的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)

对我来说很好。你到底在档案里放了什么?你是怎么运作的?我只是把
/CREATE EXTERNAL/,/^[)]/{/^[()]/d;p}
放入一个文件,并用
sed-n-f script.sed ddl.txt
调用它。是的,我忘了做dos2unix。谢谢