![如何从特定文本的某一行开始 grep 总是发生变化的文本?](https://linux22.com/image/1003687/%E5%A6%82%E4%BD%95%E4%BB%8E%E7%89%B9%E5%AE%9A%E6%96%87%E6%9C%AC%E7%9A%84%E6%9F%90%E4%B8%80%E8%A1%8C%E5%BC%80%E5%A7%8B%20grep%20%E6%80%BB%E6%98%AF%E5%8F%91%E7%94%9F%E5%8F%98%E5%8C%96%E7%9A%84%E6%96%87%E6%9C%AC%EF%BC%9F.png)
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] ------------------------------------------------------------------------
我需要 grep,49086475
每次执行程序时它都会发生变化。
请指导我捕捉之后的文本finally wfid is :
。
答案1
使用 awk:
awk '/finally wfid is :/{print $NF}'
...打印包含的行的最后一个字段finally wfid is :
。
答案2
答案3
尽管已经发布了所有好的解决方案,但我还是要添加一个仅使用 的解决方案。由于我无法记住和命令,grep
我经常以这种方式做事。sed
awk
grep 'finally wfid is' input_file | grep -o '[0-9]*'
第一个 grep 将获取正确的行。第二个 grep 使用参数-o
获取o仅匹配行的一部分,这里是任何数字。
答案4
我觉得到目前为止发布的所有答案都没有抓住问题的重点。或者,也许我抓住了。我理解这个问题的意思是
我需要找到之后出现的文本(八位数字)
finally wfid is :
,然后grep
找到该文本的文件。
发布的答案很好地完成了第一部分,但没有完成工作。恕我直言,muru 的回答是最好的;我将以此为基础:
grep "$(awk '/finally wfid is :/{print $NF}' contentJSON)" contentJSON
捕获来自哪里的 输出$(command)
command
(在本例中为awk
)并在外部命令中使用它(在本例中为grep
)。我从问题中假设文件名是contentJSON
。