【问题标题】:Parse key value from variable in shell script从 shell 脚本中的变量解析键值
【发布时间】:2020-05-17 04:41:04
【问题描述】:

我想从变量中提取所有键值对并需要重用它。

当前有带有 unicode 字典的变量。

a="u'{a': u'true', u'b': u'1', u'c': u'E', u'key': u'null', u'key1': u'null'}"

尝试在 shell 中使用 python 中的json.tool,但它是类型文件(unicode),所以无法获取。

是否可以只在shell中遍历变量并在shell中打印所有键值对

试过下面的东西:

echo $a | python -c 'import json,sys; print type('sys.stdin')'

输出:

<type 'file'>

注意:我们不能使用jq

我需要重复使用的期望输出:

a:true
b:1
c:E
key:null
key1:null

我将在我的脚本中重新使用它作为键值。

【问题讨论】:

  • 是的,我需要得到你建议的键值对
  • 您的 JSON 无效。
  • 我不知道这是否适合您想要的,但您可以评估:eval(a),然后像普通字典一样获取项目:eval(a).items()
  • @Cyrus:我知道 json 格式无效。所以只问我们是否可以遍历和打印键值。
  • @n.qber:不,它不起作用。谢谢

标签: python json bash shell variables


【解决方案1】:

使用bash 命令和sed

试试这个

tr ',' '\n' <<< $a | cut -d"'" -f2,4| sed "s#^{##g;s#'#:#g"

演示:

$echo $a
u'{a': u'true', u'b': u'1', u'c': u'E', u'key': u'null', u'key1': u'null'}
$tr ',' '\n' <<< $a | cut -d"'" -f2,4| sed "s#^{##g;s#'#:#g"
a:true
b:1
c:E
key:null
key1:null
$


【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 2011-08-24
    • 2022-01-18
    • 1970-01-01
    相关资源
    最近更新 更多