刪除除以特定模式開頭的行之外的空格

刪除除以特定模式開頭的行之外的空格

我想刪除檔案中的所有空格,除了以相同模式開頭的每一行(模式是“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如果第一個表達式以 開頭,則第一個表達式跳到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

相關內容