如何提取字符串

如何提取字符串

我的数据如下

sp|Q9H9K5|MER34_HUMAN(9-21)
sp|Q9H9K5|MER34_HUMAN(493-507)
sp|Q9H9K5|MER34_HUMAN(524-539)
sp|P31689|DNJA1_HUMAN(22-33)
sp|P31689|DNJA1_HUMAN(66-82)
sp|P31689|DNJA1_HUMAN(93-104)
sp|P08246|ELNE_HUMAN(7-27)
sp|P08246|ELNE_HUMAN(72-83)
sp|P10144|GRAB_HUMAN(5-13)

我正在尝试提取之间的字符串||

sed -n " ||" file
grep "||" file 

不工作 。

欲望输出是这样的

Q9H9K5
Q9H9K5
Q9H9K5
P31689
P31689
P31689
P08246
P08246
P10144

然后我想让它们变得独一无二

 Q9H9K5
 P31689
 P08246
 P10144

答案1

在这里使用可以cut达到很好的效果。

cut -d\| -f2 myfile.txt 

产生以下输出:

Q9H9K5
Q9H9K5
Q9H9K5
P31689
P31689
P31689
P08246
P08246
P10144

-d 告诉cut我们要注意管道字符来分隔输出的列(在这种情况下我们必须转义它)。 -f 指定您想要返回的输入的哪一列(或多列)。列从 1 开始编号。

如果您只需要唯一值,可以将该输出通过管道传输到 sort 和 uniq,如下所示:

cut -d\| -f2 myfile.txt | sort | uniq

这会产生:

P08246
P10144
P31689
Q9H9K5

答案2

您可以尝试以下方法:

awk -F\| '{print $2}' input_file|sort -u

相关内容