如何解决在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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。