我正在 Unix 命令行上工作。我有两个文件。我想要cat file1.txt
和grep
输出file2.txt
文件1.txt
123A
223A
143A
153A
183A
123J
123P
文件2.txt:
123A (TYU)
223A (RUT)
143A (EWRW) 4
153A (TGBW) 89 ()
183A (23) YHYT
123J ikik 780
123P haja 123
XRQE haja 123
XRQE haja 909
最后 2 行file2.txt
不存在于file1.txt
我正在尝试做类似的事情:
head file1.txt | **and ??**
grep file2.txt
我尝试使用xargs
,$variable
来存储它,但 shell 挂起或不起作用。
预期输出:已编辑:
123A (TYU)
223A (RUT)
143A (EWRW) 4
153A (TGBW) 89 ()
183A (23) YHYT
123J ikik 780
123P haja 123
答案1
我假设您想要搜索file2.txt
使用来自file1.txt
?的字符串中存在的字符串。
如果是这样,您可以使用grep
的-f
开关来完成此操作。
-f FILE, --file=FILE
从 FILE 中获取模式,每行一个。空文件包含零个模式,因此不匹配任何内容。 (-f 由 POSIX 指定。)
所以请尝试以下操作:
$ grep -f file1.txt file2.txt
123A (TYU)
223A (RUT)
143A (EWRW) 4
153A (TGBW) 89 ()
183A (23) YHYT
123J ikik 780
123P haja 123
传递 file1.txt 的一部分
另一方面,如果您只想搜索中存在的部分字符串,则file1.txt
可以使用流程替代动态生成 的子集并将其file1.txt
作为临时文件传递给 的开关。grep
-f
$ grep -f <(head -5 file1.txt) file2.txt
123A (TYU)
223A (RUT)
143A (EWRW) 4
153A (TGBW) 89 ()
183A (23) YHYT
这将从 中获取前 5 行,并通过符号file1.txt
将它们作为临时文件传递给.<(..)
grep