我是 bash 脚本的新手。我正在尝试从文件中获取与某种模式匹配的单词。但是,我无法从中得到任何东西。我认为问题出在特殊字符上。有人可以帮我找到解决方案。
例子:
我的代码:
awk '/[c8d313c81caa1103:-603ec52f:1630466b4e8:5448][amirbekova] com.sas.analytics.crm.custdata.sql/{flag=1;next}/quit;/{flag=0}flag && /CMDM\./' SASMarketingAutomationCore5.4.log.2018-04-27 >> test1.txt
所以我正在寻找 CMDM。介于模式之间的词:
[c8d313c81caa1103:-603ec52f:1630466b4e8:5448][amirbekova] com.sas.analytics.crm.custdata.sql
和
quit;
输入:
[c8d313c81caa1103:-603ec52f:1630466b4e8:5448][amirbekova] com.sas.analytics.crm.custdata.sql - TID[25810F8F] \namirbekova----- Execute Sql in MAIQService.execute() ----- \nPROC SQL; \nCreate table MATables.TXIDFAEAIZ5BDSAAGamirbekova as \nSELECT DISTINCT table0.DWH_ID AS DWH_ID LABEL='Идентификатор клиента в КИХ' FORMAT=$40. \nFROM \nCMDM.INDIVIDUAL_OBLIGATIONS table2 Left join CMDM.SYS_DICT_BINARY table1 on ( ( (table2.IO_ACTIVE_SIGN=table1.ID)) ) \nRight join CMDM.CLIENT table0 on ( ( (table0.DWH_ID=table2.CLIENT _DWH_ID)) ) quit;
输出:
- TID[25810F8F] amirbekova----- Execute Sql in MAIQService.execute() ----- PROC SQL; Create table MATables.TXIDFAEAIZ5BDSAAGamirbekova as SELECT DISTINCT table0.DWH_ID AS DWH_ID LABEL='Идентификатор клиента в КИХ' FORMAT=$40. FROM CMDM.INDIVIDUAL_OBLIGATIONS table2 Left join CMDM.SYS_DICT_BINARY table1 on ( ( (table2.IO_ACTIVE_SIGN=table1.ID)) ) Right join CMDM.CLIENT table0 on ( ( (table0.DWH_ID=table2.CLIENT _DWH_ID)) )
您可以grep
在文件/变量上运行以下命令。
grep -oP '(?<=\[c8d313c81caa1103:-603ec52f:1630466b4e8:5448]\[amirbekova] com\.sas\.analytics\.crm\.custdata\.sql)(.*)(?=quit;)' ~/test_awk/input_file
说明:
-oP
-o
仅将匹配的正则表达式显示为输出,而不是整行,并-P
激活 perl 正则表达式以进行后视/前瞻,...
以下正则表达式(?<=\[c8d313c81caa1103:-603ec52f:1630466b4e8:5448]\[amirbekova] com\.sas\.analytics\.crm\.custdata\.sql)(.*)(?=quit;)
匹配您的模式:演示:https : //regex101.com/r/FFrCu3/1/和关于正则表达式的解释:http : //www.rexegg.com/regex-quickstart.html
演示:
$ cat ~/test_awk/input_file
[c8d313c81caa1103:-603ec52f:1630466b4e8:5448][amirbekova] com.sas.analytics.crm.custdata.sql - TID[25810F8F] amirbekova----- Execute Sql in MAIQService.execute() ----- PROC SQL; Create table MATables.TXIDFAEAIZ5BDSAAGamirbekova as SELECT DISTINCT table0.DWH_ID AS DWH_ID LABEL='Идентификатор клиента в КИХ' FORMAT=$40. FROM CMDM.INDIVIDUAL_OBLIGATIONS table2 Left join CMDM.SYS_DICT_BINARY table1 on ( ( (table2.IO_ACTIVE_SIGN=table1.ID)) ) Right join CMDM.CLIENT table0 on ( ( (table0.DWH_ID=table2.CLIENT _DWH_ID)) ) quit;
$ grep -oP '(?<=\[c8d313c81caa1103:-603ec52f:1630466b4e8:5448]\[amirbekova] com\.sas\.analytics\.crm\.custdata\.sql)(.*)(?=quit;)' ~/test_awk/input_file
- TID[25810F8F] amirbekova----- Execute Sql in MAIQService.execute() ----- PROC SQL; Create table MATables.TXIDFAEAIZ5BDSAAGamirbekova as SELECT DISTINCT table0.DWH_ID AS DWH_ID LABEL='Идентификатор клиента в КИХ' FORMAT=$40. FROM CMDM.INDIVIDUAL_OBLIGATIONS table2 Left join CMDM.SYS_DICT_BINARY table1 on ( ( (table2.IO_ACTIVE_SIGN=table1.ID)) ) Right join CMDM.CLIENT table0 on ( ( (table0.DWH_ID=table2.CLIENT _DWH_ID)) )
如果您的模式在多行上,那么您可以使用以下awk
命令:
awk '/^\[c8d313c81caa1103:-603ec52f:1630466b4e8:5448\]\[amirbekova\] com.sas.analytics.crm.custdata.sql/{flag=1;print $NF;next}/^quit;/{flag=0;}{if(flag){print}}' input_file
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句