文字列を抽出する方法

文字列を抽出する方法

私のデータは次のとおりです

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

おすすめ記事