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
。