在file2

时间:2016-10-11 00:18:39

标签: linux string search grep findstr

我试图运行搜索命令来从file1查找字符串并在file2中找到它们。然后我想只打印file1中未找到的文件中的字符串。

File1将类似于:

 read
 write
 access

File2将是:

0xFF88 T write
0xFF87 t xyzwrite
0xFF86 T read
0xFF85 T xyzread
0xFF84 T xyzaccess

所以期望的结果是:

 access

***注意,我确实在File1中的所有字符串中添加了一个空格,以便不包括作为另一个字符串一部分的字符串的每次出现。

我试过了:

grep -vf file1 file2 

并从file2获取除写入和读取行之外的所有结果,包括地址。

我试过了:

grep -vf file2 file1 

并获取所有file1,因为整行file2永远不会出现在file1中。

我试过了:

diff file1 file2 | grep \^|<

并使用&lt;来获取所有file1在每一行。

有人告诉我,如果我可以删除file2中每行的前8个字符,那么diff / grep命令就可以了。

我也尝试过使用各种选项的findtr(Windows),再次,我无法让它工作。

另外,请注意每个文件的行数比我显示的要多得多。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

你可能需要做一个循环:

for i in $(cat File1); do
  grep -q "\<$i\$" File2 || echo $i
done

这将打印出来:

access