Grep
Grep 沒有用空格檢索字元串
我在一個文件中有一系列標題,其名稱如下:
grep ">scaffold_3" DM_v6.1_unanchoredScaffolds.fasta >scaffold_3 >scaffold_303 >scaffold_31 >scaffold_34 >scaffold_36 >scaffold_37 >scaffold_39 >scaffold_33 >scaffold_300
我只想選擇第一個,所以我嘗試了:
$ grep ">scaffold_3 " file.fasta $ $ grep ">scaffold_3[[:blank:]]" file.fasta $ $ grep ">scaffold_3\t" file.fasta $ $ grep ">scaffold_3\ " file.fasta $ $ grep ">scaffold_3 " file.fasta $ $ grep ">scaffold_3[[:space:]]" file.fasta $ $ grep ">scaffold_3$" file.fasta >scaffold_3
鑑於名稱後面的字元可能是空格、製表符、換行符(也可能來自 Windows)並且
[[:space:]]
不起作用,我如何才能獲得確切的名稱而不是同義詞?謝謝
如果您知道文本後沒有空格,那就
grep ">scaffold_3$"
對了。或者更確切地說使用單引號,因為
$
在雙引號中是特殊的,如果你也想鎖定行首,那麼添加^
或使用grep -x
. 所以grep '^>scaffold_3$'
或grep -x '>scaffold_3'
(
-x
是--line-regexp
:強制 PATTERN 只匹配整行)如果您可以在行尾有空格並且想要忽略任何空格,那麼
grep -e '>scaffold_3[[:space:]]*$'
將匹配字元串和行尾之間任意數量的可選空格。(並且無論它從哪裡開始,都會接受匹配。)
請注意,如果文件可以具有 Windows 樣式的 CRLF 行結尾,則不
>scaffold_3$
會這樣做,末尾的 CR 將與模式不匹配。