- 主题:请问shell命令提取文本字符串的写法?
文件1.json里有一特定字符串,想提取出来,数据类型大概这样:
...}]},"key":"B4923BA821899B94978C10a3CB1fD20835","update":true},...
result=`cat 1.json`
result=${result#*key\"\:\"}
result=${result%\"\,\"update\"\:*}
echo ${result}
感觉应该有更优雅的写法,比如会用到grep awk sed之类,请问该怎么写啊?
--
FROM 49.7.47.*
提取json里的内容不是应该用jq嘛
【 在 flyacat (放·逐) 的大作中提到: 】
: 文件1.json里有一特定字符串,想提取出来,数据类型大概这样:
: ...}]},"key":"B4923BA821899B94978C10a3CB1fD20835","update":true},...
: result=`cat 1.json`
: ...................
--
FROM 122.225.220.*
json用jq, 用grep可以这样写:
grep -oP '(?<="key":")\w+'
【 在 flyacat (放·逐) 的大作中提到: 】
: 文件1.json里有一特定字符串,想提取出来,数据类型大概这样:
: ...}]},"key":"B4923BA821899B94978C10a3CB1fD20835","update":true},...
: result=`cat 1.json`
: ...................
--
FROM 114.245.104.*
可以不限于json,普通文件也可以
比如
1234start100200end888888
怎么方便提取出start和end之间的字符串来啊?
【 在 adoal 的大作中提到: 】
: 提取json里的内容不是应该用jq嘛
:
--
FROM 49.7.47.*
你的意图是啥?
方式很多。
固定位置的,可以cut,然后用sed或者trn(这个我不确定)去掉双引号.
【 在 flyacat 的大作中提到: 】
:
: 文件1.json里有一特定字符串,想提取出来,数据类型大概这样:
: ...}]},"key":"B4923BA821899B94978C10a3CB1fD20835","update":true},...
:
: result=`cat 1.json`
#发自zSMTH@Redmi Note 7
--
FROM 183.162.53.*
整个python多好
非要这么麻烦
【 在 flyacat (放·逐) 的大作中提到: 】
: 文件1.json里有一特定字符串,想提取出来,数据类型大概这样:
: ...}]},"key":"B4923BA821899B94978C10a3CB1fD20835","update":true},...
: result=`cat 1.json`
: ...................
--
FROM 121.69.60.*
json用jq是正解
【 在 world (You are my world) 的大作中提到: 】
: 标 题: Re: 请问shell命令提取文本字符串的写法?
: 发信站: 水木社区 (Tue Oct 26 17:13:39 2021), 站内
:
: json用jq, 用grep可以这样写:
: grep -oP '(?<="key":")\w+'
:
: 【 在 flyacat (放·逐) 的大作中提到: 】
: : 文件1.json里有一特定字符串,想提取出来,数据类型大概这样:
: : ...}]},"key":"B4923BA821899B94978C10a3CB1fD20835","update":true},...
: : result=`cat 1.json`
: : ...................
:
: --
: 辟谣:2012年12月21不是我的末日。
:
:
: ※ 来源:·水木社区 mysmth.net·[FROM: 114.245.104.*]
--
FROM 124.207.188.194
先取start右边,再取end左边
【 在 flyacat 的大作中提到: 】
: 可以不限于json,普通文件也可以
:
: 比如
: 1234start100200end888888
:
: 怎么方便提取出start和end之间的字符串来啊?
: --
发自「今日水木 on V2055A」
--
FROM 223.72.88.*
echo "1234start100200end888888" | grep -Po '(?<=start)(.*)(?=end)'
100200
【 在 flyacat 的大作中提到: 】
: 可以不限于json,普通文件也可以
: 比如
: 1234start100200end888888
: ...................
--
FROM 125.71.196.*
多谢!
【 在 poocp 的大作中提到: 】
: [code=bash]
: echo "1234start100200end888888" | grep -Po '(?<=start)(.*)(?=end)'
: 100200
: ...................
--
FROM 49.7.47.*