ターミナル出力で特定の用語の後ろにある項目を見つけて置き換える方法

ターミナル出力で特定の用語の後ろにある項目を見つけて置き換える方法

既知の特定のパーティション名の後にblkid特定のパーティション名を実行してコピーする必要があります。UUID

次に、既存の設定ファイルに貼り付けて、UUID()にすでに存在する設定ファイルを置き換える必要がありますparent_device_uuid。以下の構成例。

初心者が理解できる方法でこれを行う方法を示すことができる人はいますか?

{
  "backup_device_uuid" : "cdb09919-39d4-4a17-9fc4-6daa1d38f1e1",
  "parent_device_uuid" : "IOe7Qc-fjAK-2ydl-OMk4-SvVu-1P6Y-PJSHzV",
  "do_first_run" : "false",
  "btrfs_mode" : "false",
  "include_btrfs_home_for_backup" : "false",
  "include_btrfs_home_for_restore" : "false",
  "stop_cron_emails" : "true",
  "btrfs_use_qgroup" : "true",
  "schedule_monthly" : "true",
  "schedule_weekly" : "true",
  "schedule_daily" : "true",
  "schedule_hourly" : "true",
  "schedule_boot" : "true",
  "count_monthly" : "1",
  "count_weekly" : "2",
  "count_daily" : "3",
  "count_hourly" : "3",
  "count_boot" : "1",
  "snapshot_size" : "15837901165",
  "snapshot_count" : "292512",
  "date_format" : "%Y-%m-%d %H:%M:%S",
  "exclude" : [
    "/home/test/**",
    "/home/test2/**",
    "/root/**"
  ],
  "exclude-apps" : []
}

答え1

ファイルを操作している場合は、jsonこのコマンドを使用できますjq

得るためにただ一部のパーティションでは、UUID次のコマンドを使用できます。

タグ名でblkidを使用する

blkid -s UUID -o value -t 'LABEL=your_label_name'

#If you got: 'command not found' then you can use:
sudo blkid -s UUID -o value -t 'LABEL=your_label_name'
#or
/sbin/blkid -s UUID -o value -t 'LABEL=your_label_name'

your_label_name希望するデバイスの名前はどこにありますか?

からblkid --help

  1. -s指定されたラベル(この場合はUUID)を表示します。
  2. -o出力形式です(この場合はUUIDタグ値が必要です)。

lsblkを使用する(ラベル名を使用しない)

lsblk /dev/nvme0n1p1 -o UUID -n

からlsblk --help

  1. -o出力列(この場合はUUID列のみが必要です)
  2. -nタイトルを印刷しないでください

解決策

最後に、上記のコマンドのいずれかを使用して取得したUUIDに置き換えるjqことができます。parent_device_uuid

jq --arg puuid "$(blkid -s UUID -o value -t 'LABEL=your_label_name')"  '.parent_device_uuid = $puuid' < configfile > tmpconfig
mv tmpconfig configfile

mvまたは、それを使用する場合(ファイルの移動、名前の変更など)権限がない場合は、次を使用します。

sudo mv tmpconfig configfile

~について構成ファイル、次を含むファイルです。

{
  "backup_device_uuid" : "cdb09919-39d4-4a17-9fc4-6daa1d38f1e1",
  "parent_device_uuid" : "IOe7Qc-fjAK-2ydl-OMk4-SvVu-1P6Y-PJSHzV",
  "do_first_run" : "false",
  "btrfs_mode" : "false",
  "include_btrfs_home_for_backup" : "false",
  "include_btrfs_home_for_restore" : "false",
  "stop_cron_emails" : "true",
  "btrfs_use_qgroup" : "true",
  "schedule_monthly" : "true",
  "schedule_weekly" : "true",
  "schedule_daily" : "true",
  "schedule_hourly" : "true",
  "schedule_boot" : "true",
  "count_monthly" : "1",
  "count_weekly" : "2",
  "count_daily" : "3",
  "count_hourly" : "3",
  "count_boot" : "1",
  "snapshot_size" : "15837901165",
  "snapshot_count" : "292512",
  "date_format" : "%Y-%m-%d %H:%M:%S",
  "exclude" : [
    "/home/test/**",
    "/home/test2/**",
    "/root/**"
  ],
  "exclude-apps" : []
}

パラメータ情報jq:デバイスの値を変数に割り当てる--arg puuid "$(blkid -s UUID -o value -t 'LABEL=your_label_name')"ために使用されます。 puuidを変更してください(これはデバイスのUUIDです)UUIDpuuid'.parent_device_uuid = $puuid'"parent_device_uuid" : "IOe7Qc-fjAK-2ydl-OMk4-SvVu-1P6Y-PJSHzV" to what

関連情報