我有以下unix变量的模式。我想根据'CREATE' , 'TABLE' & ','
模式搜索和输出
a ="CREATE TABLE T1, is my TABLE but , DROP TABLE is not CREATE my TABLE T2, is table" # it may keep going but pattern is same ....
echo $a | awk -F'CREATE' '{print $2}' | awk -F'TABLE' '{print $2}' | awk -F',' '{print $1}'
输出
T1
我想打印
T1
T2
...
最佳答案
您的示例数据并不重要,但您可以尝试以下想法:
awk -v RS=, '/TABLE/&&/CREATE/{print $NF}'
说明:
我们将
Record Separator
设置为,
,因此它在看到的每个,
处分割线。因此,您的输入行被视为:CREATE TABLE T1
is my TABLE but CREATE my TABLE T2
is table
/TABLE/&&/CREATE
是一个正则表达式,用于查看包含单词TABLE
和CREATE
的行。您可以只包含要匹配的单词边界,而不包含要匹配的单词边界。TABLE
表示打印最后一个字段。CONSTABLE
是一个特殊的print $NF
变量,它包含字段数,NF
保存最后一个字段的值。$ echo "CREATE TABLE T1, is my TABLE but CREATE my TABLE T2, is table" | awk -v RS=, '/TABLE/&&/CREATE/{print $NF}'
T1
T2
关于linux - unix awk命令未列出多个匹配的模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22097429/