터미널 출력에서 ​​특정 용어 뒤에 있는 항목을 찾아 바꾸는 방법

터미널 출력에서 ​​특정 용어 뒤에 있는 항목을 찾아 바꾸는 방법

알려진 특정 파티션 이름 뒤에 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

관련 정보