我在文件中有以下类型的条目。我可以轻松地将RAW
替换为VARCHAR
,
awk 'BEGIN{IGNORECASE = 1};{gsub(/RAW/,"VARCHAR")}; 1'
我试图找到一种在替换后添加模式的方法
例如,这是我的数据
COL1 RAW(64) NOT NULL,
COL2 RAW(255) NOT NULL,
这里是所需的数据
COL1 VARCHAR (64) FOR BIT DATA NOT NULL,
COL2 VARCHAR (255) FOR BIT DATA NOT NULL,
即RAW
应替换为VARCHAR
- 我可以使用awk
执行此部分,但我不知道如何添加FOR BIT DATA
答案 0 :(得分:0)
如果您使用GNU Awk
,则可以使用其gensub()
函数严格定义regex
匹配以包含这两种模式
awk '{$0=gensub(/(.*)\<RAW\>\(([0-9]+)\)(.*)\<NOT NULL\>/, "\\1VARCHAR (\\2)\tFOR BIT DATA NOT NULL", "g", $0)}1' file
对于输入文件,
cat file
COL1 RAW(64) NOT NULL,
COL2 RAW(255) NOT NULL,
COL3 NOTRAW(255) NOT NULL,
返回
COL1 VARCHAR (64) FOR BIT DATA NOT NULL,
COL2 VARCHAR (255) FOR BIT DATA NOT NULL,
COL3 NOTRAW(255) NOT NULL,
以上需要模式RAW
和NOT NULL
才能提供替换
如果您只想匹配RAW
的行,
awk '{$0=gensub(/(.*)\<RAW\>\(([0-9]+)\)(.*)/, "\\1VARCHAR (\\2)\tFOR BIT DATA NOT NULL", "g", $0)}1' file