如何使用grep检索一行中的字符串

时间:2018-04-19 12:56:00

标签: macos unix grep

MacOS,Unix

我正在尝试使用grep来隔离一行中的特定ID,如下所示:

# STOCKHOLM 1.0

#=GS WP_002089484.1/1-154 DE [subseq from] MULTISPECIES: AAC(3)-I family aminoglycoside 3-N-acetyltransferase [Proteobacteria]

WP_002089484.1/1-154 MGIIRTCRLGPDQVKSMRAALDLFGREFGDVATYSQHQPDSDYLGNLLRSKTFIALAAFDQEAVVGALAAYVLPKFEQARSEIYIYDLAVSGEHRRQGIATALINLLKHEANALGAYVIYVQADYGDDPAVALYTKLGIREEVMHFDIDPSTAT
#=GR WP_002089484.1/1-154 PP 9*******************************************************************************************************************************************************98
#=GC PP_cons                 9*******************************************************************************************************************************************************98
#=GC RF                      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//

我只想隔离说WP_002089484.1的部分,但我必须为许多文件执行此操作,其中ID始终以“WP_”开头并始终以“.1”结尾。我只想从每个文件中出现独特的事件。

我尝试过类似的事情:

grep -o "WP_.\{0,11\}" *.sto >> ProtID

但是ProtID仍然拥有原始文件中的所有信息。

1 个答案:

答案 0 :(得分:1)

如果您只希望每个文件出现一次,则以下命令可以帮助您:

grep  -o  "WP_.\{0,11\}" *.sto | sort | uniq

输出将是:

file1.sto:WP_002089484.1
file2.sto:WP_002089484.1

如果你想从结果中删除文件名:

grep  -o  "WP_.\{0,11\}" *.sto | sort | uniq  | grep -o "WP_.\{0,11\}"

在这种情况下,输出将是:

WP_002089484.1
WP_002089484.1