如何从两个文件中提取常用词,其中一个文件包含PL/SQL块,而另一个文件是UNIX中使用的函数列表?

如何从两个文件中提取常用词,其中一个文件包含PL/SQL块,而另一个文件是UNIX中使用的函数列表?,unix,awk,sed,Unix,Awk,Sed,我在unix中有一个文件名为input_sql 文件A看起来像: yifi.yifi_bdcr_流程u log@BHOR.AB.CTT.COM 按vdr_日期分组 RAISE_应用程序_错误-20004,'pqi_扇区_每日_v1数据不可用。记录为“| |记录” 来自rtb.s\U rtb3\U gsm\U usid_dy@MAXIMA_M62085_LNK.DB.ATT.COM RAISE_应用程序错误-20004,“s_btb4_gsm_usid_dy数据不可用。记录为“| |记录” ,nv

我在unix中有一个文件名为input_sql

文件A看起来像:

yifi.yifi_bdcr_流程u log@BHOR.AB.CTT.COM

按vdr_日期分组

RAISE_应用程序_错误-20004,'pqi_扇区_每日_v1数据不可用。记录为“| |记录”

来自rtb.s\U rtb3\U gsm\U usid_dy@MAXIMA_M62085_LNK.DB.ATT.COM

RAISE_应用程序错误-20004,“s_btb4_gsm_usid_dy数据不可用。记录为“| |记录”

,nvla.useid,b.useid作为useid

和cm_使用“未分配”

提示更新进程表日志

从cqi\u imp\u度量\u过程\u日志中删除

插入cqi\u imp\u度量\u过程\u日志

TRUNCSYSDATE

系统日期

我有另一个文件B,其文本如下:

插入

日志

分组

NVL

特鲁克

系统日期

日志

项次

标志

我希望在UNIX中提取两个文件之间的常用词Select、insert等

输出应类似于第三个文件C:

分组

||

||

特鲁克

NVL

特鲁克

系统日期

特鲁克

系统日期

谢谢:


PS:使用给定的解决方案,LOG、SIGN、LN被包含在第三个文件中,该文件来自cqi\u imp\u metric\u process\u LOG和cm\u usid“UNASSIGNED”@分别为MAXIMA_M62085_LNK.DB.ATT.COM。我不希望包括这些文本

尝试使用grep,如下所示:

grep -iof pattern_file.txt fileA.txt
Grep-将从fileA.txt文件中搜索名为pattern_file.txt的文件中定义的模式,该文件与-f参数一起使用。而-我将忽略这个案例-o将只打印匹配的模式。 这是一个awk

gnu awk版本:


awk'FNR==NR{a[$1];next}{fori in aiftoupper$0~toupperiprint i}'fileA fileBHi Jidder-你能解释一下上面的命令吗?我相信jotne可以看到,因为他的答案完全相同:是的,但他还没有回答。你们谁能解释一下其中的步骤P Jotne??留下这个问题,做一个新的问题。我想你需要添加o参数。TBH我不确定他是否只需要选定的单词或整行。不管怎样,谢谢你的评论,我在我的回答中也添加了评论。我不需要整行,我只需要文本A和文本Bgrep-iof pattern_file.txt fileA.txtHi Jotne都通用的函数。你的方法或多或少是准确的。但我不需要整条线。我只想从文本A中提取常用函数。比如只插入而不是插入整个文本。我面临一个小问题。假设模式文件有一个函数名,其中有两个词,例如groupby。当我使用您的解决方案时,它只是显示组,而不是整个文本。我在查询中还有一行包含TRUNCSYSDATE,它们都存在于模式文件中。当我将$1替换为$0时,将显示GROUP by,但TRUNC函数未列出。请提供帮助。@ArnabRoy此解决方案逐行读取模式文件并将其存储在数组a中。不管是一个词还是一个句子。然后根据数组a中的所有数据测试文件a中的一行和一行。如果找到,只需打印fileA中的相应行。你能更新你的例子吗。
awk 'FNR==NR {a[$0];next} {for (i in a) if (tolower($0)~tolower(i)) print}' pattern fileA
**INSERT /*+APPEND */ INTO ABC_IMP_SEC_DAILY_STG
SELECT
awk -vIGNORECASE=1 'FNR==NR {a[$0];next} {for (i in a) if ($0~i) print}' pattern fileA
**INSERT /*+APPEND */ INTO ABC_IMP_SEC_DAILY_STG
SELECT