문자열을 추출하는 방법

문자열을 추출하는 방법

내 데이터는 다음과 같습니다

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

관련 정보