Shell 从文件中提取特定模式的步骤

Shell 从文件中提取特定模式的步骤,shell,scripting,Shell,Scripting,我有下面的文件file.txt,在那里我需要提取模式 CREATE TABLE `test`( `id` string COMMENT '', `age` string COMMENT '', `city` string COMMENT '') ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde' WITH SERDEPROPERTIES ( 'path'='hdfs://local/') STORED AS

我有下面的文件file.txt,在那里我需要提取模式

CREATE TABLE `test`(
  `id` string COMMENT '',
  `age` string COMMENT '',
  `city` string COMMENT '')
ROW FORMAT SERDE
  'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
WITH SERDEPROPERTIES (
  'path'='hdfs://local/')
STORED AS INPUTFORMAT
  'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
LOCATION
  'hdfs://local/'
TBLPROPERTIES (
  'COLUMN_STATS_ACCURATE'='false',
  'EXTERNAL'='FALSE',
  'numFiles'='14',
  'numRows'='-1',
  'rawDataSize'='-1',
  'spark.sql.sources.provider'='orc',
  'spark.sql.sources.schema.numParts'='9',
'spark.sql.sources.schema.part.8'='....":{}}]}',
  'totalSize'='12',
  'transient_lastDdlTime'='12')
我需要下面的

CREATE TABLE `test`(
  `id` string COMMENT '',
  `age` string COMMENT '',
  `city` string COMMENT '')

如何在Unix中实现?

如果您知道表中的列数,可以使用grep。在这种情况下,如果有3列,请使用:

grep -A 3 'CREATE TABLE' file.txt
其中-A之后的3是匹配后将包括在输出中的行数


如果您不知道列数,请使用awk。

Unix不是一种语言。标记您要使用的语言StackOverflow旨在帮助人们修复现有的编程代码。编辑您的Q以显示您在编写问题解决方案方面的最佳尝试。很抱歉,对教程、研究、工具、建议、库和代码的请求已脱离主题。在这里发布更多Qs之前,请阅读、、和。幸运的是,实际上我不知道我想要多少列,直到关闭以获得CREATETABLE结构。你能帮忙吗?你用谷歌搜索过吗?