![sed를 사용하여 파일의 일부만 유지하고 순서를 변경합니다(textWrangler grep 구문 기반).](https://linux55.com/image/107079/sed%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EC%9D%BC%EB%B6%80%EB%A7%8C%20%EC%9C%A0%EC%A7%80%ED%95%98%EA%B3%A0%20%EC%88%9C%EC%84%9C%EB%A5%BC%20%EB%B3%80%EA%B2%BD%ED%95%A9%EB%8B%88%EB%8B%A4(textWrangler%20grep%20%EA%B5%AC%EB%AC%B8%20%EA%B8%B0%EB%B0%98)..png)
trial.fastq
다음 형식의 파일을 편집하고 싶습니다 .
@NAME123.15.1 15 length=151
GTAGCNTACGGGAGGCAGCAGTGGGGAATTTTCC
+NAME123.15.1 15 length=151
AAABB#>>AABDGCEGGGFGGGHHHGGGFHHGHH
@NAME123.14.1 14 length=150
TTCGCNTACGGGAGGCAGCAGTAGGGAATCTTCC
+NAME123.14.1 14 length=150
ABBBB#>>ABBBGGGGGEGGGGHDGFFFHHGHHH
형식을 다음과 같이 변경하고 싶습니다.
@Inst:1:FID:LANE:TILE:15:Y 1:Y:0:NAME123
+GTAGCNTACGGGAGGCAGCAGTGGGGAATTTTCC
@Inst:1:FID:LANE:TILE:14:Y 1:Y:0:NAME123
+TTCGCNTACGGGAGGCAGCAGTAGGGAATCTTCC
sed
다음을 포함한 여러 형식을 시도했습니다 .
sed -i -E 's/@(\w+).(\d+).(\d)\s\d+\slength=\d+\n.*/@Inst:1:FID:LANE:TILE:\2:Y \3:Y:0:\1\n/g' trial.fastq > trial_new.fastq
TextWrangler를 복사하여 grep 검색을 찾아서 찾았습니다. 또한:
sed -e 's/\(@\w\).\(\d..+\).\(\d\)\s\d..*\slength\=\d..*\n.*$(\w..*)\(.*\)$\+.*$.*$/@Inst\:1\:FID\:LANE\:TILE\:\2\:Y \3\:Y\:0\:\1\n\4/g' trial.fastq
나는 내가 잘못된 방향으로 가고 있다고 확신합니다. 누군가 내가 뭘 잘못하고 있는지, 이 문제를 해결하는 방법을 이해하도록 도와줄 수 있나요?
답변1
원하는 출력을 올바르게 이해하기를 바랍니다.
$ sed -nr '/#/d;s/@([^\.]+)[^ ]+ ([0-9]+) .*/@Inst:1:FID:LANE:TILE:\2:Y 1:Y:0:\1/p;s/^[A-Z]/\+&/p' file
@Inst:1:FID:LANE:TILE:15:Y 1:Y:0:NAME123
+GTAGCNTACGGGAGGCAGCAGTGGGGAATTTTCC
@Inst:1:FID:LANE:TILE:14:Y 1:Y:0:NAME123
+TTCGCNTACGGGAGGCAGCAGTAGGGAATCTTCC
설명하다
-n
우리가 요청할 때까지 인쇄하지 마십시오-r
ERE를 사용하세요/#/d
행 삭제#
([^\.]+) save some characters that are not
.` 나중에[^ ]+ ([0-9]+) .*
공백 사이에 숫자를 저장하세요\1
대체 저장된 스키마에 대한 역참조;
셸에서와 마찬가지로 별도의 명령s/^[A-Z]/\+&/
대문자로 시작하는 줄을 접두어로 바꿉니다.+
p
우리가 처리한 라인을 인쇄하세요
-i
출력이 원하는 것인지 테스트한 후 파일을 제자리에서 편집하려면 이 플래그를 사용하십시오(명령 반복 사용 sed -nri ....
).