É mais fácil manter apenas linhas com números X ou mais . Aqui está um exemplo disso, onde X é 13:
sed -n 's/[0-9]/&/13p' input.txt > output.txt
No entanto, você pode modificar isso para fazer o inverso. Aqui está um comando que apenas manterá linhas com menos de 13 números:
sed -n -e 's/[0-9]/&/13;t' -e 'p' input.txt > output.txt
Explicação - imprima apenas linhas com mais de 13 números
sed -n 's/[0-9]/&/13p' input.txt > output.txt
O símbolo &
no texto de substituição significa "tudo o que foi correspondido".
O sinalizador de número no comando s
(após a parte /find/replace/
) significa apenas substituir essa instância do padrão de pesquisa.
O sinalizador p
no comando s
significa "imprimir se uma substituição foi feita".
A opção -n
, é claro, é suprimir a ação "imprimir" padrão de Sed.
Explicação - imprima apenas linhas com < 13 números
sed -n -e 's/[0-9]/&/13;t' -e 'p' input.txt > output.txt
A opção -e
é "executar"; apenas passa um comando. Precisamos disso aqui, já que estamos passando mais de um.
O comando t
ignora os comandos restantes se o último comando s
executou uma substituição.
O comando p
imprime.