[英]Extract substring with sed command
我有一个包含此字符串的文件:
2020-12-21 10:46:49.165 INFO: [41] browser.leaveCallAndQuitBrowser() [2020-12-21T10:46:36+0000] [FINE] DevTools WebSocket Event: Runtime.consoleAPICalled 74D7A734C0BD6EEFA60271821A6A2F55 {
"args": [ {
"type": "string",
"value": "2020-12-21T10:46:36.633Z"
}, {
"type": "string",
"value": "[modules/xmpp/xmpp.js]"
}, {
"type": "string",
"value": "\u003CA.connectionHandler>: "
}, {
"type": "string",
"value": "My Jabber ID: recorder@recorder.mydomain/hjE0dMPL"
} ],
...
我正在尝试使用
sed
命令从文件recorder@recorder.mydomain.com/vT1gTnAz
提取此字符串,但无法完成。 任何有sed
和regex
经验的人都可以帮助或指导我这样做吗?
目前,我使用两个命令执行此操作:我首先获取“我的 Jabber ID:recorder@recorder.mydomain.com/hjE0dMPL”,然后用空字符串替换我的 Jabber ID:。
grep -EiEio '\bMy Jabber ID: (recorder@[A-Z0-9.-]+\.[A-Z]{2,4}.*)\b' browser.0.txt | sed 's/^My Jabber ID: //g'
不过,在一个命令中完成它会更优雅。
为此,您应该使用像 jq 这样合适的 json 解析器,但是如果由于某种原因不能使用 jq,则可以使用 sed:
sed -rn 's/(^.*My Jabber ID: )(.*)(".*$)/\2/p' file
使用 -r 启用正则表达式,然后使用正则表达式将该行分成三个部分,仅用该行替换第二部分并打印。
您可以直接使用 grep 解决此问题。 假设您的内容在 test.txt 文件中:
cat test.txt |grep -Po '"value": "My Jabber ID: \K[^"]*'
将返回
recorder@recorder.room-test5.11sight.com/hjE0dMPL
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.