내 데이터는 다음과 같습니다
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