我有一组指定的字符串,其中包含一些要匹配的关键字。
关键词是:字符串将包含“CREATESETTABLE”和点(。)和TABLENAME 在下面的示例字符串中,DATABASE1和DATABASE2是动态的,但之后会出现一个点(。),然后是TABLENAME;但是点(。)和TABLENAME可能会重复n次。
的字符串= “CREATESETTABLEDATABASE1.TABLE1(UID)CREATESETTABLEDATABASE1.TABLENAMEuid,CID,MID)DATABASE2.TABLENAME(HI,你好)”
我使用的是:
echo "$string" | awk -F'CREATESETTABLE+[^ ]+.TABLENAME' '{print $2}'
实际输出为:(hi,hello)
预期结果是:uid,cid,mid)DATABASE.TABLENAME(hi,hello)
注意:使用我在此示例中指定的关键字。不要使用其他关键字,如“(”;其他数据只是动态的,我说的是静态的
答案 0 :(得分:1)
试试这个sed
,
echo $string | sed 's/.*CREATESETTABLE[^)]\+TABLENAME\(.*\)/\1/g'
如评论中所述,
sed -e 's/.*CREATESETTABLE[^)]\+TABLENAME\(.*\)/\1/g' -e 's/.*CREATEMULTISETTABLE[^)]\+TABLENAME\(.*\)/\1/g'