sed cut grep linux 命令输出
Posted
技术标签:
【中文标题】sed cut grep linux 命令输出【英文标题】:sed cut grep linux command output 【发布时间】:2021-03-29 14:20:42 【问题描述】:我有一个字符串,我想从匹配中删除所有匹配项,直到第一个逗号:示例
["value":1,"btata":"15","Id":"17","","url":"","time":"222""value":1,"secId":"16","Id":"19","time":"20218 22status":""
我想得到 Id:17 Id:19
我已经能够使用 sed -e 's/Id/_/g' -e 's/[^_]//g' -e 's/_/Id /g'
获取 Id,但直到逗号才能匹配。
【问题讨论】:
由于这是 JSON,请尝试使用jq
:stedolan.github.io/jq
【参考方案1】:
您可以使用sed
来实现,但它需要两个表达式。本质上,您需要删除所有'"'
字符,然后将','
上的输入拆分为'\n'
。第二个表达式只是定位以Id
开头的行,例如
sed 's/"//g;s/,/\n/g' | sed -n /^Id/p
使用/输出示例
$ echo '[value:1,btata:15,Id:17,,url:,time:222value:1,secId:16,Id:19,time:20218 22status:' |
sed 's/"//g;s/,/\n/g' | sed -n /^Id/p
Id:17
Id:19
(注意:这一切都带有一个警告,你不应该使用 shell 命令处理 json。建议使用像 jq
这样的 json 验证工具——尽管这似乎不是有效的json)
【讨论】:
以上是关于sed cut grep linux 命令输出的主要内容,如果未能解决你的问题,请参考以下文章
如何通过命令行实用程序操作文本:grep、cut、awk、sed 或 BBEdit(Grep 查找选项)
获取文本中你须要的字段的 几个命令 grep awk cut tr sed