所以,我有一个看起来像这样的JSON文件;
{ “数据”:{我需要的东西} “不需要的东西”:{更多不需要的东西} “数据”:{我需要更多东西} }总之,我…的东西
你可以非常简单地使用 awk 与字段分隔符 "{" 和 substr 和 length($2) - 1 修剪收盘价 "}" 。
awk
"{"
substr
length($2) - 1
"}"
例如,您的数据:
$ awk -F"{" '/^[ ]*"data"/{print substr($2, 1, length($2)-1)}' json stuff that i need more stuff that i need
( 的 注意: 强> 你可以修剪领先的空间 "stuff" 如果需要,在第1行)
"stuff"
的 快速解释 强>
awk -F"{"
'{'
/^[ ]*"data"/
"data"
print substr($2, 1, length($2)-1)
length-1
'}'
的 bash解决方案 强>
使用bash,您可以遍历每一行,查找以。开头的行 "data" 然后用几个简单的 参数扩展 从每端去除线的不需要的部分。例如:
$ while read -r line; do [[ $line =~ ^\ *\"data\" ]] && { line="${line#*\{}" line="${line%\}*}" echo $line } done <json
(将您的数据放入 json 文件名,你可以只复制/粘贴到终端)
json
的 示例使用/输出 强>
$ while read -r line; do > [[ $line =~ ^\ *\"data\" ]] && { > line="${line#*\{}" > line="${line%\}*}" > echo $line > } > done <json stuff that i need more stuff that i need
( 的 注意: 强> bash默认的单词拆分甚至为你处理前导空格)
虽然你可以做到这一点 awk 和 bash 任何严肃的JSON操作都应该用 jq 效用。
bash
jq
正如其他人建议你应该真的使用 jq 解析json格式的工具。但是,如果您无法访问该工具和/或无法安装它,下面是一个非常简单的方法,将json视为原始文本(不推荐)并生成您想要的输出:
grep "\"data\":" json_file | tr -d \"
使用给定的输入,您可以使用
sed -rn 's/.*"(data)": (.*)/\1 \2/p' inputfile