搜索带有特殊字符的字符串 linux

奥尔哈斯

我是 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Linux中创建带有特殊字符的文件?

如何对带有[]等特殊字符的字符串进行grep?

在Linux上的多个文件中搜索字符串

MySQL-通过带有特殊字符的文本字符串搜索数据库

带有特殊字符的Linux cat内联文件

Linux Shell脚本,按输入字符串搜索

删除带有特殊字符的完整字符串

如何搜索包含$和;的字符串 在Linux中

如何在一行中搜索带有特殊符号的字符串

R.download.file使用带有特殊字符(ñ)的链接-Linux vs Windows

如何将带有特殊字符的QString转换为字节流以通过Linux管道发送

带有特殊字符文件的Rsync在Mac和Linux之间不起作用

Grep Linux中字符串的特殊部分

将带有特殊字符的字符串插入KDB +

%在Linux shell字符串中有什么作用?

如何在Linux中连续创建带有特殊字符(如()和空格)的文件名?

带有特殊字符的可替换字符串

如何删除带有特殊字符的字符串结尾?

Splunk ::搜索具有特殊字符的字符串

Linux-如何递归搜索所有非二进制(文本)文件以查找特定字符串

Linux 仅在给定的文件集中搜索字符串

来自带有特殊字符'/'的字符串的Javascript子字符串字符

带有特殊字符的字符串

Python Pandas 搜索带有元字符的字符串

带有特殊字符的 Solr 字符串字段搜索

Linux 中带有格式化字符串参数的 stat 命令

在mongo中搜索带有特殊字符的字符串

在 Python 中打印带有特殊字符的字符串

带有特殊字符的 C++ 原始字符串