非常に長いJSONデータ行を含むテキストファイルがあり、特定のフィールドの値を抽出する必要があります。最も簡単な方法はjq
orを使用することですgrep -o
。ただし、会社のコンピュータにあるためインストールできず、jq
私たちが使用しているSolarisバージョンにはgrep
そのオプションはありません-o
。現在、次のコマンドを使用しています。
cat json.file |
tr "," "\n" |
awk '/customfield_10701/ { print $0 }' |
tr '"' "\n" |
awk 'NR==4'
上記の方法はうまく機能しますが、複雑すぎてエレガントな解決策が必要であるという感じを消すことはできません。
例json.file
:
... jshdgfjhsdgfjh,"customfield_10701":"Some Branch","customfield_10702ksghdkfsdkfjkj ...
現在のコマンドで次のようになります。
Some Branch
(それが私が欲しいものです)。
ベストアンサー1
探しているデータに文字がないことを確認し、"
ファイルに "customfield_10701"エントリを含む行が1つしかない場合
sed -n 's/.*"customfield_10701":"\([^"]*\)".*/\1/p'
例えば、
$ cat x
... jshdgfjhsdgfjh,"customfield_10701":"Some Branch","customfield_10702ksghdkfsdkfjkj ...
$ sed -n 's/.*"customfield_10701":"\([^"]*\)".*/\1/p' x
Some Branch