Sim, você pode!
grep '[0-9]' file
Substitua file
pelo nome do seu arquivo ...
Como encontrar uma linha que contenha valores numéricos?
i.e. Eu quero encontrar alguma linha que tenha alguns dígitos. Eu estou usando o Ubuntu 16.04. Posso fazer isso com o comando grep
?
Sim, você pode!
grep '[0-9]' file
Substitua file
pelo nome do seu arquivo ...
Aqui estão algumas opções, todas usando o seguinte arquivo de entrada de teste:
foo
bar 12
baz
Todos esses comandos imprimirão qualquer linha de entrada contendo pelo menos um número:
$ grep '[0-9]' file
bar 12
$ grep -P '\d' file
bar 12
$ awk '/[0-9]/' file
bar 12
$ sed -n '/[0-9]/p' file
bar 12
$ perl -ne 'print if /\d/' file
bar 12
$ while read line; do [[ $line =~ [0-9] ]] && printf '%s\n' "$line"; done < file
bar 12
$ while read line; do [[ $line = *[0-9]* ]] && printf '%s\n' "$line"; done < file
bar 12
Ninguém mencionou o python ainda, então aqui está:
bash-4.3$ cat file
foo
foo1bar
barfoo foo bar
barfoo 123 foobar 321
bash-4.3$ python -c 'import re,sys;matched=[line.strip() for line in sys.stdin if re.findall("[0-9]",line)];print "\n".join(matched)' < file
foo1bar
barfoo 123 foobar 321
A ideia básica de como isso funciona é que damos o arquivo como entrada stdin, o código python lê todas as linhas no stdin e usa a função re.findall()
do módulo regex para combinar linhas e finalmente imprime a lista dessas linhas. Um pouco longo, mas funciona. Algumas partes podem ser muito reduzidas, digamos assim:
python -c 'import re,sys;print "\n".join([l.strip() for l in sys.stdin if re.findall("[0-9]",l)])' < file
Na nota lateral, isso é python2. Use a função print
com parênteses para adaptá-la a python3