file1.tabular
包含超过 3 列的“元素”信息。
element1 235 oval red \
element2 334 oval red \
element3 356 rectangular blue
file2.txt
包含单个列
element1\
element3
我想过滤file1.tabular
并将它们另存为file3.tabular
,它将仅包含 中的元素file2.txt
,但包含 中的所有 3 列信息file1.tabular
,例如
element1 235 oval red\
element3 356 rectangular blue
Ubuntu 上有解决这个问题的命令吗?我将不胜感激专家的帮助。谢谢
答案1
您可能正在寻找
grep -f file2.txt file1.tabular > file3.tabular
该-f
选项指示grep
读取要从中查找的模式file2.txt
。它将搜索应用于file1.tabular
并将输出重定向到file3.tabular
.
请注意,我假设您的文件中没有真正的“行继续”转义符(\
所有行的末尾)。
注意:与基于正则表达式的搜索一样,在制定 的内容时需要小心file2.txt
。
- 任何您想要字面匹配的正则表达式特殊字符都需要转义。
- 另外,
grep
默认情况下将显示部分匹配(即仅匹配 中单词的子字符串的一个模式file1.tabular
)。为了缓解这种情况,您可以使用-w
开关仅允许“全字”匹配。