특정 패턴으로 시작하는 줄을 제외한 공백 제거

특정 패턴으로 시작하는 줄을 제외한 공백 제거

동일한 패턴(패턴은 "ORGANISM")으로 시작하는 모든 줄을 제외하고 파일에서 모든 공백을 제거하고 싶습니다.

입력:

Cat; Dog; Squirrel
ORGANISM Animalus terrus
Sequence: ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT

산출:

Cat;Dog;Squirrel
ORGANISM Animalus terrus
Sequence:ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT

"ORGANISM" 문자로 시작하는 줄을 제외하고 모든 줄에 더 이상 공백이 없습니다.

답변1

sed '/^ORGANISM/!s/ //g' /path/to/input

이렇게 하면 모든 줄에서 모든 공백이 제거됩니다.~ 아니다로 시작하세요 ORGANISM.

답변2

sed -e '/^ORGANISM/n' -e 's/ //g'  < input > output

첫 번째 표현식은 n로 시작하는 경우 다음 줄로 이동하고 ORGANISM, 그렇지 않은 경우 s모든 공백을 아무것도 없는 것으로 대체합니다( g전역적으로).

답변3

(?!ORGANISM)다음은 대체를 수행해야 하는지 알아내기 위해 부정 예측을 사용하는 Perl 버전입니다 . -p플래그를 사용하면 자동 인쇄가 가능합니다.

$ perl -pe 's/[[:blank:]]//g if /^(?!ORGANISM).*/' input.txt                                                             
Cat;Dog;Squirrel
ORGANISM Animalus terrus
Sequence:ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT

관련 정보