awkまたはsedの助けが必要です。

awkまたはsedの助けが必要です。

{'REST_SPS': u'4.1.4.339', 'REST_ROM': u'U32 v2.34 (04/08/2020)', 'REST_SMART': u'2.65', 'Server': 'example', 'REST_ILO': u'2.18 Jun 22 2020', 'REST_1G': u'20.14.62', 'REST_DISK': u'HPD5', 'REST_10G_2': u'14.26.1040', 'REST_IB': u'12.24.1000', 'REST_IE': u'0.2.2.0', 'REST_10G_1': u'14.26.1040'}

上記の行はここにあり、出力は次のようになります。

4.1.4.339, U32 v2.34 (04/08/2020), 2.65, example, 2.18 Jun 22 2020, 20.14.62, HPD5,14.26.1040,  12.24.1000, 0.2.2.0, 14.26.1040

ベストアンサー1

Steeldriverが提案したように:

line="{'REST_SPS': u'4.1.4.339', 'REST_ROM': u'U32 v2.34 (04/08/2020)', 'REST_SMART': u'2.65', 'Server': 'example', 'REST_ILO': u'2.18 Jun 22 2020', 'REST_1G': u'20.14.62', 'REST_DISK': u'HPD5', 'REST_10G_2': u'14.26.1040', 'REST_IB': u'12.24.1000', 'REST_IE': u'0.2.2.0', 'REST_10G_1': u'14.26.1040'}"

echo "$line" | python3 -c '
import sys
line = sys.stdin.readline()
d = eval(line)
keys = ["REST_SPS", "REST_ROM", "REST_SMART", "Server", "REST_ILO", "REST_1G", "REST_DISK", "REST_10G_2", "REST_IB", "REST_IE", "REST_10G_1"]
print(", ".join([d[k] for k in keys]))
'
4.1.4.339, U32 v2.34 (04/08/2020), 2.65, example, 2.18 Jun 22 2020, 20.14.62, HPD5, 14.26.1040, 12.24.1000, 0.2.2.0, 14.26.1040

私は実際にPythonの専門家ではないので、いくつかの改善が必要になるかもしれません。

ファイルから行を読み取る場合は、1行ごとにPythonを1回呼び出す必要はありません。 Pythonで処理を実行してください。

おすすめ記事