
我想刪除檔案中的所有空格,除了以相同模式開頭的每一行(模式是“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