Shell
grep 模式與文件完全匹配,僅在第一列中搜尋
我有一個這樣的大文件:
denovo1 xxx yyyy oggugu ddddd denovo11 ggg hhhh bbbb gggg denovo22 hhhh yyyy kkkk iiii denovo2 yyyyy rrrr fffff jjjj denovo33 hhh yyy eeeee fffff
那麼我的模式文件是:
denovo1 denovo3 denovo22
我正在嘗試使用
fgrep
以僅提取與我的文件中的模式完全匹配的行(所以我想要denovo1
但不是denovo11
)。我嘗試使用-x
完全匹配,但後來我得到了一個空文件。我試過:fgrep -x --file="pattern" bigfile.txt > clusters.blast.uniq
有沒有辦法只在第一列中進行 grep 搜尋?
你可能想要
-w
旗幟 - 來自man grep
-w, --word-regexp Select only those lines containing matches that form whole words. The test is that the matching substring must either be at the beginning of the line, or preceded by a non-word constituent character. Similarly, it must be either at the end of the line or followed by a non-word constituent character. Word-constituent characters are letters, digits, and the underscore.
IE
grep -wFf patfile file denovo1 xxx yyyy oggugu ddddd denovo22 hhhh yyyy kkkk iiii
要僅在第一列中強制匹配,您需要修改模式文件中的條目以添加行錨:您還可以使用
\b
單詞錨而不是命令行-w
開關,例如patfile
:^denovo1\b ^denovo3\b ^denovo22\b
然後
grep -f patfile file denovo1 xxx yyyy oggugu ddddd denovo22 hhhh yyyy kkkk iiii
請注意,
-F
如果文件包含正則表達式而不是簡單的固定字元串,則必須刪除該開關。