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

Linux常用文本操作命令整理

使用grep和cut命令 如何截取某一段文字?

grep,cut,wc,sort,diff,uniq,patch命令

linux命令-sed,uniq,cut,wc