考虑以下数据库架构:
CREATE UNIQUE INDEX blah1 ON table1(length);
CREATE INDEX blah2 ON table3(name);
CREATE INDEX blah3 ON table3 USING btree(id);
我想编写一个小的awk脚本,它将返回索引和表的名称,例如:
blah1, table1
blah2, table2
blah3, table3
我需要匹配单词INDEX
后面的单词和单词ON
后面的单词并以(
或空格结尾。
任何想法如何使用正则表达式匹配,而不迭代所有$NF
?
答案 0 :(得分:1)
我不太清楚,但这似乎有效:
awk 'BEGIN{ FS="INDEX | ON "}{gsub(/[ (].*/,"",$3); print $2", " $3}' test.dat
答案 1 :(得分:0)
sed 's/.*INDEX \([^ ]*\) ON \([^( ]*\)[( ].*/\1, \2/' inputfile
awk '{sub(".*INDEX ","");sub(" ON ",",");sub("[( ].*",""); sub(",",", ");print}' inputfile
答案 2 :(得分:0)
使用Perl单行程序很好用。
cat file | perl -ne '/INDEX ([a-zA-Z0-9]+) ON ([a-zA-Z0-9]+)/ && print "$1, $2\n";'
返回您想要的内容。