- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想在文件 2 中找到与文件 1 相比的匹配行。
file2 包含多个列,第一列包含可能与 file1 匹配的信息。
我尝试了以下命令,但没有给出任何匹配结果(file1 中的内容肯定在 file2 中)。我之前使用过这些命令来比较不同的文件,并且它们有效。
grep -f file1 file2
grep -Fwf file1 file2
当我尝试 grep 任何不匹配的内容时,我得到结果
grep -vf file1 file2
file1 包含基因列表(754 个基因),每行一行
ATM
ATP5B
ATR
ATRIP
ATRX
我感觉问题出在我的 file1 上。当我尝试在 file1 中手动键入几个项目以进行测试,并使用 file2 执行 grep 时,我从 file2 中获得了匹配的行。
当我将 file1 的内容(最初在 Excel 中)复制到记事本中制作 .txt 文件时,我没有得到任何匹配的结果。
我看不出我的 file1 有任何问题。有什么建议吗?
最佳答案
你说,
I copied the contents of file1 (originally in excel) into notepad making a .txt file
txt 文件可能包含回车符/换行符对,这会搞乱 grep。正如我在评论中建议的那样,试试这个:
tr -d '\015' < file1 > file1a
grep -Fwf file1a file2
tr
调用会删除所有回车符,为您提供一个正确的 Unix/Linux 文本文件,仅将换行符 (\n
) 作为行终止符。
你说:
I can't see any problem with my file1.
查看额外回车问题的方法如下:
cat -v test1
每行末尾的那些小^M
标记是cat -v
向您显示回车控制代码的方式。
附录:
回车符 (CR) 在 C 语言中为十进制 13、十六进制 0x0d、八进制 015、\r
。
换行符 (LF) 在 C 中是十进制 10、十六进制 0x0a、八进制 012、\n
。
因为它是一个老式实用程序,所以 tr
接受八进制(基数 8)控制字符表示法。
(我认为在某些版本中 tr -d '\r'
可以工作,但我不确定,而且我不确定您拥有什么版本。tr -d '\015'
应该是通用的。)
关于linux - grep 两个文件之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37127398/
我有一个文件 test.log。非常大的日志文件。它有不同级别的日志记录。例如,trace , debug , info , warning和 error . 显然trace级别消息只是高速发送垃圾邮
我正在经历一些事情,发现了我无法理解的事情, grep -v grep 这意味着什么?我知道 -v 开关将选择所有不匹配的行。但为什么是第二个grep? 这是完整的命令: ps -ef | grep
我使用 egrep 输出一些带有平台名称的行: XXX | egrep "i686-nptl-linux-gnu$|i686-w64-mingw32$|x86_64-unknown-linux-gnu
grep退出状态部分报告中的手册: EXIT STATUS The exit status is 0 if selected lines are found, and 1 if not
我试图返回多个字符串的第一次出现,即,我想从以下文本中选择第一次出现 1259、3009 和 1589 的行。 ADWN 1259 11:00 B23 ADWN 3009
我猜它不是 Perl 兼容的正则表达式,因为有一种特殊的 grep具体来说就是 PCRE。什么是grep最相似? grep有什么特别的怪癖吗?我需要知道什么? (我习惯了 Perl 和 PHP 中的
有没有办法让 grep 从与搜索表达式匹配的文件中输出“单词”? 如果我想在多个文件中查找“th”的所有实例,我可以这样做: grep "th" * 但是输出会是这样的(粗体是我写的); some-t
我有许多(近 100 个)大 csv 文件,第一列中有 sellID。我知道某些 sellID 在 2 个或更多文件中重复 2 次或多次。是否可以使用 grep 找到所有重复的 sellID(创建映射
我有一个文件中的文件列表。该列表很大,并且文件名是非标准的:这意味着有些文件包含空格、非 ASCII 字符、引号、单引号... 因此,将庞大的文件列表作为参数传递给 grep 并不是一种选择: 因为我
我想在 shell 脚本中使用 grep 和两个变量 var = match cat list.txt | while read word_from_list; do grep "$word_
我有一个大文件,其中每一行都包含一个子字符串,例如 ABC123。如果我执行 grep ABC file.txt 或 grep ABC1 file.txt 我按预期返回这些行,但如果我执行 grep
当我执行以下 grep 时,我得到的结果我无法向自己解释: host:/usr/local/tomcat > grep '-XX:PermSize=256m' * RELEASE-NOTES:
这个问题在这里已经有了答案: grep recursively for a specific file type on Linux (5 个回答) 关闭4年前。 要在子目录中查找所有带有 .out 扩
有什么方法可以让我在搜索某些东西时使用 grep 忽略某些文件,相当于 svnignore 或 gitignore 的东西?我通常在搜索源代码时使用类似的东西。 grep -r something *
有没有办法让 grep 从匹配搜索表达式的文件中输出“单词”? 如果我想在多个文件中找到“th”的所有实例,我可以这样做: grep "th" * 但是输出会是这样的(粗体是我的); some-tex
我是 awk/sed 的完全菜鸟,所以如果我在这里遗漏了一些明显的东西,请原谅我。 基本上我正在尝试做一个嵌套的 grep,即类似于: grep $value `exim -Mvh $(`exim -
我正在尝试编写下载 node.js source 的脚本和 corresponding SHASUMS256.txt ,校验和,grep OK,不返回任何结果,使用 grep 的 -q 标志成功退出代
在 grep "str"* 这是否意味着 grep 执行 grep 的所有内容? 那么 grep -r "str". 的结果比前一个多 最佳答案 当您运行 grep str * 时,shell 将扩展
我正在尝试 grep 文件以查找匹配项的确切出现,但我也得到了更长的虚假匹配项: grep CAT1717O99 myfile.txt -F -w 输出: CAT1717O99 CAT1717O99
我有一个文件,其中包含我希望通过未指定分析运行的标识符(每行一个)。如果一切运行正常,分析将输出具有相同标识符的另一个列表(不一定按相同顺序)。 然而,事实证明,对某些输入标识符没有进行分析,并且这些
我是一名优秀的程序员,十分优秀!