我想删除文件中的所有空格,除了以相同模式开头的每一行(模式是“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