在Linux命令行中,如何检查file2的内容是否存在于file2中?然后找出在file2中类似的模式存在于何处?

问题描述

我需要获取一个如下所示的txt文件:

3   2   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   2   1   2   2   2   2   1   2   2   2   2   1   2   2   2   2   2   1   2   2   2   2   1   2   2   2   2   1   2   2   1   1   1   1   3   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   2   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   X   X   X

,然后检查该模式是否存在于如下所示的较大文件中:

1001        VV01        CH01    T   d01 KJKSC01 -   -   -   C01 5945    3720    -2225   36  -66.3   36C 36C1_OOB    BD1A    BD8B    DTC_TRFC01  DTCC04  102 119         1001    3   2   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   2   1   2   2   2   2   1   2   2   2   2   1   2   2   2   2   2   1   2   2   2   2   1   2   2   2   2   1   2   2   1   1   1   1   3   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   2   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   X   X   X   0   2   0   2   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
1002        Sf01        CH01    T   d01 KEMEC01 -   -   -   CS4 5945    3720    -2225   36  -66.3   36C 36C1_OOB    BD1A    BD8B    DTC_TRFC01  HWNA04  102 119         1002    3   2   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   3   3   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   2   1   2   2   2   2   1   2   2   2   2   1   2   2   2   3   1   3   2   2   2   2   1   2   2   2   2   1   2   2   1   1   1   1   3   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   2   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   X   X   X   0   2   0   2   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
1003        SD01        CH01    N   d01 JSNFC01 -   -   -   C05 5945    3720    -2225   36  -66.3   36C 36C1_OOB    BD1A    BD8B    DTC_TRFC01  JSHG04  102 119         1003    3   2   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   3   1   1   3   1   1   1   1   1   1   1   1   1   1   1   1   1   2   1   2   2   2   2   1   2   2   2   2   1   2   2   2   3   1   2   3   2   2   2   1   2   2   2   2   1   2   2   1   1   1   1   3   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   2   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   X   X   X   0   2   0   2   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

然后,一旦找到模式,我就需要在行的开头打印在匹配模式之前找到的“ 1001”。 (file2中大约有100行)

我尝试了一些事情:

grep -Pc -f file1 file 2

然后

grep -P -f file1 file2 | awk '{print \$1}'

获取匹配的模式。

但是

grep -Pc -f file1 file2 

除非我使用过,否则不会找到模式

grep -Pc -f <(tr -d '\t\n\r' <file1) <(tr -d '\t\n\r' <file2)

它消除了所有空白,但随后却很难找到我需要拉出的“ 1001”以告诉我所找到的图案。

对不起,如果已经回答了。我花了几天时间阅读并尝试了网站上的其他问题,但是我经验不足,似乎什么也没用。

首先感谢任何建议或帮助!

解决方法

只需使用awk

awk -v pat=$(cat file1) '$0 ~ pat { print $1 }' file2

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...