Удалить пробелы, за исключением строк, начинающихся с определенного шаблона.

Удалить пробелы, за исключением строк, начинающихся с определенного шаблона.

Я хочу удалить все пробелы из файла, за исключением каждой строки, начинающейся с одного и того же шаблона (шаблон — «ORGANISM»).

Вход:

Cat; Dog; Squirrel
ORGANISM Animalus terrus
Sequence: ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT

Выход:

Cat;Dog;Squirrel
ORGANISM Animalus terrus
Sequence:ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT

Больше никаких пробелов ни в одной строке, кроме строки, начинающейся с символов «ОРГАНИЗМ».

решение1

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

Это удалит все пробелы во всех строках, которые ненетначните с ORGANISM.

решение2

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

Первое выражение переходит на nстроку ext, если эта начинается с ORGANISM, а если этого не произошло, sзаменяет все пробелы ничем ( gглобально)

решение3

Вот версия Perl, использующая отрицательный просмотр вперед, (?!ORGANISM)чтобы выяснить, нужно ли нам выполнять замену. -pФлаги позволяют автоматически печатать

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

Связанный контент