Eu tenho um arquivo como este:
other lines . . .
blah blah blah (:34)
Desejo encontrar a ocorrência de números no arquivo acima. Eu vim com:
grep [0-9] filename
Mas isso está imprimindo o todo:
blah blah blah (:34)
Pelo contrário, eu quero apenas 34
. Existe alguma maneira de fazer isso?
command-line
bash
text-processing
grep
Formigas
fonte
fonte
man grep
Respostas:
Você pode usar
grep -E
para acessar a sintaxe da expressão regular estendida (o mesmo que egrep )Eu criei um arquivo de teste com o conteúdo abaixo:
Agora, para saudar os números sozinho do texto, você pode usar
será produzido.
Aqui "-o" é usado para gerar apenas o segmento correspondente da linha, em vez do conteúdo completo da linha.
Os colchetes irregulares (por exemplo, {e}) indicam o número de instâncias da correspondência. {1,4} requer que o caractere ou classe de caracteres anterior ocorra pelo menos uma vez, mas não mais que quatro vezes.
Espero que isto ajude
fonte
grep -Eo '[0-9]{1,}' testfile
Você pode usar a expressão de colchete RE
[:digit:]
especificada na seção 9.3.5 do padrão POSIX , em combinação com o-o
sinalizador para imprimir apenas "palavras" correspondentesfonte
grep -o
imprimirá apenas a parte correspondente da linha. Caso contrário, o grep imprimirá todas as linhas com o padrão.fonte
Eu usaria o curl para acessar seu arquivo local ou remotamente, em seguida, preencheria as linhas com números envoltos em (:), cortaria esses pedaços e gravaria no arquivo
a resposta aceita ignora que possa haver números nas linhas anteriores do arquivo, funciona para os dados de exemplo, mas e se o arquivo fosse remoto?
Local
Neste exemplo
output.txt
, sua pasta atual será gravada, estamos acessando ainput.txt
partir da sua pasta Pública.Controlo remoto
Neste exemplo
output.txt
na sua pasta atual será escrito mais, estamos acessandoinput.txt
a partirhttps://yoursite.com/Public/
.fonte
curl
quando um simplescat
faria?