저는 초보자 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