![두 문자열 사이의 문자를 찾고 줄 끝에 일부 텍스트를 추가하는 방법은 무엇입니까?](https://linux55.com/image/126384/%EB%91%90%20%EB%AC%B8%EC%9E%90%EC%97%B4%20%EC%82%AC%EC%9D%B4%EC%9D%98%20%EB%AC%B8%EC%9E%90%EB%A5%BC%20%EC%B0%BE%EA%B3%A0%20%EC%A4%84%20%EB%81%9D%EC%97%90%20%EC%9D%BC%EB%B6%80%20%ED%85%8D%EC%8A%A4%ED%8A%B8%EB%A5%BC%20%EC%B6%94%EA%B0%80%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
나는 다음 줄을 포함하는 fasta 파일을 작업 중입니다.
\>97977-100;sample=Samp1
TAATGATGATTTGT
\>97978-60;sample=Samp2
AACATTCAACGCGGTCGGTGAGTA
\>97979-30;sample=Samp3
AACCGTAGGAGTTGATGTGCGGT
\>97980-20;sample=Samp4
ACTGTCTGTATGTGGTG
-
와 사이의 모든 문자를 찾아서 ;
text 와 함께 줄 끝에 추가하고 싶습니다 ;size="(value)";
. 그러면 다음과 같은 결과를 얻을 수 있습니다.
\>97977-100;sample=Samp1;size=100;
TAATGATGATTTGT
\>97978-60;sample=Samp2;size=60;
AACATTCAACGCGGTCGGTGAGTA
\>97979-30;sample=Samp3;size=30;
AACCGTAGGAGTTGATGTGCGGT
\>97980-20;sample=Samp4;size=20;
ACTGTCTGTATGTGGTG
나는 보았다이 문제두 문자열 사이의 문자를 찾는 방법에 대한 도움말은 다음을 통해 얻을 수 있습니다.
sed -n 1~2p $file | sed -e 's/.*-\(.*\);.*/\1/'
줄 끝에 추가하는 방법을 알고 있습니다.
sed "1~2s/$/;size=(I want this to be the output of the command above);/" $file
그러나 나는 그 둘을 합치지 않을 것이다. sed
너무 큰 인수 오류가 발생하므로 두 명령 모두 사용할 수 없습니다 .
답변1
sed
해결책:
sed -E 's/(.*-)([0-9]+)(;.*)/\1\2\3;size=\2;/' file
산출:
>97977-100;sample=Samp1;size=100;
TAATGATGATTTGT
>97978-60;sample=Samp2;size=60;
AACATTCAACGCGGTCGGTGAGTA
>97979-30;sample=Samp3;size=30;
AACCGTAGGAGTTGATGTGCGGT
>97980-20;sample=Samp4;size=20;
또는awk
:
awk -F'-' '/^>/{ $0=$0";size=" int($2) ";" }1' file