Grep
當涉及帶編號的單詞時,Grep 特定行
我有一個具有以下結構的文件。
name #chrom chromStart chromEnd encodeLabel description EH38E1310153 chr1 181251 181601 pELS EH38E1310153 EH38E1310154 chr2 190865 191071 dELS EH38E1310154 EH38E1310158 chr3 778562 778912 PLS EH38E1310158 EH38E1310159 chr4 779086 779355 PLS EH38E1310159 EH38E1310160 chr8 779727 780060 pELS EH38E1310160 EH38E1310162 chr17 790397 790626 CTCF-only EH38E1310162 EH38E1310164 chr18 807736 807916 dELS EH38E1310164 EH38E1310165 chr19 812113 812266 dELS EH38E1310165
我只需要
chr1
和那一行。這是我迄今為止嘗試過的:grep 'chr1' filename.txt > Output.txt
這會引出以下幾行:
EH38E1310153 chr1 181251 181601 pELS EH38E1310153 EH38E1310162 chr17 790397 790626 CTCF-only EH38E1310162 EH38E1310164 chr18 807736 807916 dELS EH38E1310164 EH38E1310165 chr19 812113 812266 dELS EH38E1310165
當我需要它時,似乎預設的 grep 搜尋是貪婪的。我不需要
chr1*
。我嘗試了-o
標誌,但這只是返回chr1
。我需要整條線。我該如何解決這個問題?
你可以試試這個
grep '\<chr1\>' filename.txt > output.txt
grep
不是“貪婪”。它只是在行上查找給定的模式,如果在行的任何位置找到該模式,則列印整行。或者,如果-o
給出,它只列印匹配的部分。您顯示的所有行都包含字元串
chr1
。其中一個緊隨其後的是一個空格,而在三個中,緊隨其後的是其他東西。但這沒關係,它仍然是每一行上的那個字元串。如果要檢查該行的第二個欄位是否正是給定的字元串,請使用 awk 之類的工具來處理此類基於欄位的文本輸入。
例如
awk -v value=chr1 '$2 == value' < filename.txt > Output.txt