sed ou awk são boas escolhas:
sed -rn '/^.{0,3}$/n; /^[0-9]{3,}/n; p' file
awk --re-interval 'length > 3 && !/^[0-9]{3,}/' file
Por exemplo, eu tenho este arquivo de texto:
use
user_99
12345
+ 10k linhas ...
E eu quero remover aqueles que têm menos de 4 caracteres da linha de comando, Eu já pesquisei no google, mas não houve resultados.
Alguma ideia? :)
Eu também gostaria de remover linhas com mais de 3 números no começo.
sed ou awk são boas escolhas:
sed -rn '/^.{0,3}$/n; /^[0-9]{3,}/n; p' file
awk --re-interval 'length > 3 && !/^[0-9]{3,}/' file
Você pode fazer um regex de GNU para pelo menos 4 caracteres como .{4,}
- e então deletar todas as linhas exceto aquelas com pelo menos 4 caracteres:
sed -r '/.{4,}/!d' file
Da mesma forma, uma linha que comece com mais de três dígitos consecutivos seria ^[0-9]{4,}
, para excluir todos os
sed -r '/^[0-9]{4,}/d' file
Você pode combiná-los usando -e
ou ;
sed -r -e '/.{4,}/!d' -e '/^[0-9]{4,}/d' file
ou
sed -r '/.{4,}/!d ; /^[0-9]{4,}/d' file
Observe que .
corresponde a caracteres de espaço e a caracteres que não são de espaço - se não for o que você deseja, você poderá alterá-lo substituindo .
por um intervalo de caracteres ou POSIX, como [[:alnum:]]
. / p>
Tags bash