私のデータは次のとおりです
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