쉘 매개변수 확장

쉘 매개변수 확장

다음 매개변수 셸 확장을 수행했습니다.

trihead="$(cat ../FASTA_SEC/"$i".fa)"
echo "${trihead#"${trihead%%[!A]*}"}" > ../FASTA_SEC/"$i".fa

fasta 파일(일반 텍스트 형식 .fa)의 두 번째 줄에서 선행 A를 잘라내고 싶습니다.

입력은 다음과 같습니다.

>B4-0K032_18670_015
AAAAAAANNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNGNNNTAGATACAAGCGAGCGGC

출력이 다음과 같기를 원합니다.

>B4-0K032_18670_015
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNGNNNTAGATACAAGCGAGCGGC

그런데, 잘 설명된 쉘 매개변수 확장의 일부 측면을 아는 사람이 있습니까?

답변1

선행 연속 As를 다음에서 변환합니다.두번째파일의 한 줄(원본 파일을 결과로 대체):

$ sed '2s/^A*//' data.fa >data.out  &&  mv data.out data.fa

이 예에서 sed명령은 특히 바꾸기 명령( )을 라인 2에 적용합니다. 줄 시작 부분의 s를 아무 것도 바꾸지 않습니다 s.A

이 패턴은 ^A*" *줄( )을 시작하는 0개 이상의 단일 문자( )와 일치"를 의미합니다.A^

내가 사용하지 않는 이유 sed -i("제자리에서 편집")는 이 플래그가 -i구현 간에 이식이 매우 불가능하기 때문입니다.sed

답변2

그러면 A다음으로 시작하는 줄 다음 줄에서 모든 선행 s가 제거 됩니다 >.

sed '/^>/n;s/^A*//' /path/to/file

출력이 원하는 대로이고 원본 파일을 편집하려면 다음을 사용하십시오.

sed --in-place '/^>/n;s/^A*//' /path/to/file

관련 정보