Use o awk:
awk '/finally wfid is :/{print $NF}'
... que imprime o último campo da linha contendo finally wfid is :
.
contentJSON is :-
{"id":"0","name":"inc_timestamp","workspaceId":"37158928","infoJSON":"{a:{\"a\":\"bcd\",\"b\":{\"c\":\"d\"}}}","contentJSON":"{\n \"tasks\": [\n {\n \"name\": \"Input\",\n \"taskType\": \"executeCustomSQLQueryForIncrementalLoad\",\n \"id\": 10,\n \"x\": 95,\n \"y\": 44,\n \"inputConnectors\": [],\n \"outputConnectors\": [\n {\n \"nodeID\": 11,\n \"type\": \"Output\",\n \"name\": \"\"\n }\n ],\n \"argsMap\": {\n \"taskId\": 10,\n \"datasetId\": 49053696,\n \"deltaColumnName\": \"timestamp\",\n \"deltaColumnDataType\": \"timestamp\",\n \"deltaColumnValue\": \"null\",\n \"primaryKeysList\": [\n \"id\"\n ]\n },\n \"datasetId\": 49053696\n },\n {\n \"name\": \"Output\",\n \"taskType\": \"saveToES\",\n \"id\": 11,\n \"x\": 453,\n \"y\": 44,\n \"inputConnectors\": [\n {\n \"nodeID\": 10,\n \"type\": \"Input\",\n \"name\": \"\"\n }\n ],\n \"outputConnectors\": [],\n \"argsMap\": {\n \"bizvizcubeId\": 46759937,\n \"cfg\": {\n \"es.mapping.id\": \"id\"\n }\n }\n }\n ],\n \"connections\": [\n {\n \"source\": {\n \"taskId\": 10,\n \"connectorIndex\": 0\n },\n \"dest\": {\n \"taskId\": 11,\n \"connectorIndex\": 0\n }\n }\n ],\n \"isIncrementalLoadModeWorkflow\": 1\n}\n"}
Status:200
{"wokspaceResp":{"success":true,"workspaces":[],"params":"{\"id\":\"49086475\"}"}}
{"wokspaceResp":{"success":true,"workspaces":[],"params":"{\"id\":\"49086475\"}"}}
{"success":true,"workspaces":[],"params":"{\"id\":\"49086475\"}"}
{"id":"49086475"}
wfid is : 49086475
finally wfid is : 49086475
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.136s
[INFO] Finished at: Tue Oct 24 15:30:48 IST 2017
[INFO] Final Memory: 33M/392M
[INFO] ------------------------------------------------------------------------
Eu precisava do grep 49086475
, que muda toda vez que eu executo meu programa.
Por favor, me guie para capturar o texto depois de finally wfid is :
.
Use o awk:
awk '/finally wfid is :/{print $NF}'
... que imprime o último campo da linha contendo finally wfid is :
.
Use grep
desta maneira:
grep -oP 'finally wfid is : \K.*' <filename>
A explicação da resposta de origem :
Com
grep
e o-P
por terPCRE
(Interpretar o padrão como um P erul- C ompatible R egular E xpression) e o-o
para imprimir o padrão correspondente sozinho. O\K
notify irá ignorar a parte combinada vem antes de si mesma.
Ou você pode usar sed
desta maneira:
sed -n 's/finally wfid is : //p' <filename>
finally wfid is :
, mas será substituído por uma string vazia. Apesar de todas as boas soluções já postadas, adicionarei uma que use apenas grep
. Muitas vezes acabo fazendo as coisas dessa maneira por causa da minha incapacidade de lembrar os comandos sed
e awk
.
grep 'finally wfid is' input_file | grep -o '[0-9]*'
O primeiro grep tomará a linha correta. O segundo usa o argumento -o
para obter o apenas parte correspondente da linha, que aqui é qualquer coisa numérica.
Basta fazer:
grep "finally wfid is" <filename> | awk '{print ;}'
Isto produzirá o número que está nessa linha sozinho. Se você quiser a linha inteira, apenas omita o awk
.
Parece-me que todas as respostas postadas até agora ter perdido o ponto da questão. Ou talvez eu tenha. Eu entendo a pergunta para dizer
Eu preciso encontrar o texto (número de oito dígitos) que aparece depois de
finally wfid is :
e, em seguida,grep
do arquivo para esse texto.
As respostas postadas fazem bem a primeira parte, mas não terminam o trabalho. IMHO, resposta do muru é a melhor; Eu vou construir sobre isso:
grep "$(awk '/finally wfid is :/{print $NF}' contentJSON)" contentJSON
em que $(command)
captura a saída de command
(nesse caso, o awk
)
e usa-o no comando externo (neste caso, grep
).
Parto da pergunta de que o nome do arquivo é contentJSON
.