sed '/something interesting/,$d' < file > newfile
Qual pode ser otimizado para:
sed -n '/something interesting/q;p' < file > newfile
para que sed
seja encerrado assim que encontrar o padrão.
Qual com a implementação GNU de sed
, como observado por @RakeshSharma, pode ser simplificado para
sed '/something interesting/Q' < file > newfile
Para truncar o arquivo no local, com ksh93
em vez de bash
, você poderia fazer:
printf '' <>; file >#'*something interesting*'
-
<>;
é como o operador padrão de redirecionamento<>
(aberto em leitura + gravação), exceto que o arquivo será truncado no final se o comando for bem-sucedido. -
<#pattern
procura o início da próxima linha que corresponde ao padrão.
(note que parece funcionar (com pelo menos ksh93u +) com printf ''
no stdout mas não com outros comandos incorporados como true
, :
ou eval
. Parece um bug . Também não pode ser o último comando de um script ( outro bug ).