grep 代码没有产生之前产生的结果

grep 代码没有产生之前产生的结果

grep我以前经常使用的一个小代码无法像以前一样工作。下面是一个示例,其中我有一个 7 行 3 列的数据集,该数据集名为 Animal.txt:

Animal Habitat Family
Bear   forest  Ursidae
Dog    house   Canidae
Cat    house   Fenidae
Wolf   mountain Canidae
Eagle  mountain Accipitridae
Lion   sabana  Fenidae

我有一份清单,上面有 3 种动物的名字。我想要的是提取包含这些动物名称的行。该列表名为animal3.txt。

Dog
Cat
Bear

数据集和列表都是制表符分隔的文件。我正在使用的代码是:

grep -w -F -f ./animal3.txt ./animal.txt > ./output.txt

输出只有一行:Bear我在几个论坛中搜索过,但没有找到类似的内容。我真的不知道发生了什么或者我做错了什么。

答案1

从评论中我了解到该animal3.txt文件至少在某些行的末尾有回车符。这些字符成为正在使用的模式的一部分grep,这反过来又使文件中的模式不匹配animal.txt

如果文件不应该有任何回车符,那么您可以使用

tr -d '\r' <animal3.txt >animal3-new.txt

删除它们。然后,您可以animal3.txt用更正后的文件替换原始文件animal3-new.txt

相关内容