Você pode usar sed
. Assim:
sed -e 's/Result:\(.*\)\..*$//g' file_name
se você quiser salvar o resultado no mesmo arquivo, poderá adicionar -i
a sed
arguments
Eu tenho um arquivo (file_name) que contém exatamente uma ocorrência da string "Result:" no início de uma linha. Quero imprimir todos os caracteres após a string "Resultado:" nessa linha até encontrar um '.' personagem. Qual comando de shell devo usar?
Você pode usar sed
. Assim:
sed -e 's/Result:\(.*\)\..*$//g' file_name
se você quiser salvar o resultado no mesmo arquivo, poderá adicionar -i
a sed
arguments
Uma versão moderna do GNU grep que faz regexes perl fará:
grep -P -o '^Result: \K[^.]*'
-o
diz ao grep para imprimir apenas a parte da linha correspondente. -P
com \K
na regex é uma asserção de look-behind com largura zero que faz com que o material antes do \K
não faça parte da correspondência (largura zero).
Veja também: O grep pode exibir apenas os agrupamentos especificados que correspondem
<file_name sed -n 's/^Result: \([^.]*\)\..*//p'
<file_name awk '/^Result:.*\./ {sub(/^Result: /,""); sub(/\..*/, ""); print}'
<file_name grep '^Result: .*\.' | sed 's/^Result: //' | sed 's/\..*//'
Se a presença de .
não for necessária, mude para
<file_name sed -n -e 's/\..*//' -e 's/^Result: //p'
<file_name awk '/^Result: / {sub(/^Result: /,""); print}'
<file_name grep '^Result: ' | sed 's/^Result: //'
Veja esta resposta para o fundo das soluções sed.
Tags shell shell-script