sed는 -i 플래그를 사용하여 제자리에서 수정합니다.

sed는 -i 플래그를 사용하여 제자리에서 수정합니다.

저는 초보자 GNU sed(macOS에서 실행)이고 일부 파일 헤더(~50K 헤더, 78.3Mb)를 줄이고 싶습니다.

플래그로 백업 확장자를 지정하여 FASTA 파일을 수정하려고 합니다 -i.

지금까지 나는

sed -i.bak 's/^([^|]+).[^|]+(.*)/\1\2/' file.fas 

그러면 file.fas.bak.

그러나 오류가 발생합니다.

sed: 1: "s/^([^|]+).[^|]+(.*)/\1\2/": \1 not defined in the RE

설명이 sed -re 's/^([^|]+).[^|]+(.*)/\1\2/' file.fas화면에 올바르게 인쇄됩니다.

이 상황에서 백업 파일로 인쇄하는 방법에 대한 아이디어가 있습니까?

답변1

-r또한 확장된 정규식 구문을 해석할 수 있도록 하려면 이 옵션을 지정해야 합니다 (하지만 참고하세요다음보다 -E휴대성이 뛰어납니다 .-r곧 교체하겠습니다) 따라서 사용해야 합니다.

sed -E -i.bak 's/^([^|]+).[^|]+(.*)/\1\2/' file.fas

또는 기본 정규식을 사용합니다.

sed -i.bak 's/^\([^|]\{1,\}\).[^|]\{1,\}\(.*\)/\1\2/' file.fas

고쳐 쓰다

@terdon의 질문에 대한 답변으로 해당 파일이 FASTA 파일임을 확인하셨습니다. 이 경우 >@terdon이 제안한 것처럼 헤더 줄(다음으로 시작하는 줄)만 고려하여 효율성을 향상시킬 수 있습니다.

sed -E -i.bak 's/^(>[^|]+).[^|]+(.*)/\1\2/' file.fas

관련 정보