構成ファイルでセマンティクスのバージョン表現を見つけて置き換えるには、sedを使用する必要があります。

構成ファイルでセマンティクスのバージョン表現を見つけて置き換えるには、sedを使用する必要があります。

以下は設定ファイルの内容です。

{
  "Line1": true,
  "Line2": "\/\/{hostname}\/",
  "version": "2.8.9",
  "Line4": true,
  "Line5": true
}

私はLinuxを使用しており、上記の意味バージョン番号2.8.9を見つけて変数に保存し、次の変数の論理に従ってメジャー、マイナー、またはパッチバージョンに置き換える必要があります。

誰でも適切なものを提案できますか?sed正規表現セマンティックバージョンを見つけて置き換えるために使用されます。

セマンティックバージョンの2つの有効な正規表現は次のとおりです。

  1. ^([0-9]+\.){2,2}(\*|[0-9]+)(\-.*){0,1}$
  2. ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$

ベストアンサー1

JSONを解析する方法

免責事項、あまりにも早く読んで検索と置換の応答ではありません。

@Kusulandraは良いことを与えた。

jq --arg new '3.0.0' '.version = $new' file | sponge file

そして:

jq -r '.version' file.json

そしてグローエンそしてGNU

gron file.json | grep -oP 'version.*?"\K[^"]+'

そして

package main
import (
   "encoding/json"
   "fmt"
   "io/ioutil"
   "log"
   "os"
)

func main() {
   fileContent, err := os.Open("/tmp/file.json")

   if err != nil {
      log.Fatal(err)
      return
   }

   defer fileContent.Close()

   byteResult, _ := ioutil.ReadAll(fileContent)

   var res map[string]interface{}
   json.Unmarshal([]byte(byteResult), &res)

   fmt.Println(res["version"])
}

そしてjson_xsコマンドライン

json_xs < file.json -t none -e 'print %{ $_ }{version}'

Perlモジュールを介してインストールJSON::XS

そして

#!/usr/bin/perl
use strict; use warnings;

use File::Slurp;
use JSON::XS;

my $text = read_file("file.json");
$text = decode_json $text;
print $text->{version};

そして

import json

# Opening JSON file
f = open('file.json')

# returns JSON object as a dictionary
# by parsing the data and assigns it to a variable
data = json.load(f)

# print the json value 'version'
print(data['version'])

# Closing file
f.close()

出力

2.8.9

おすすめ記事