Điểm:1

Làm thế nào để phân tích một bản đồ?

lá cờ hu

Tôi đang cố gắng tạo một danh sách trong ansible bao gồm một số thông tin về bộ chứa docker. Đầu tiên, tôi đang chạy một mô-đun lệnh trả về cái này trong thiết bị xuất chuẩn:

"bản đồ[key1:value1 key2:value2 key3:value3]"

Làm cách nào tôi có thể phân tích cú pháp này sâu hơn để nhận các giá trị dựa trên khóa mà tôi cung cấp? Khi tôi sử dụng một bản đồ bộ lọc, tôi nhận được điều này:

"msg": "<đối tượng trình tạo do_map tại 0x7f3845b8a740>"

Nếu tôi chạy danh sách bộ lọc, tôi chỉ nhận được đầu ra dưới dạng mọi ký tự trong bản đồ, vì vậy ["m", "a", "p", "[", "k", ...]

Tôi nên sử dụng bộ lọc nào?

anx avatar
lá cờ fr
anx
Bạn có thể phân tích cú pháp xung quanh nếu lệnh mà bạn nhận được lệnh này có thể xuất ra một số định dạng tuần tự hóa phổ biến (Liệu nó có tùy chọn `--json` không?)
Michael Hampton avatar
lá cờ cz
Trông giống như đầu ra từ một số chương trình Go. Kiểm tra với các nhà phát triển của nó để xem liệu bạn có thể lấy nó ở một số định dạng dễ phân tích cú pháp hơn, chẳng hạn như JSON. Tôi đoán rằng có thể đó là đầu ra từ một số lệnh `docker`, nhưng bạn không chỉ định (và bạn nên có). Nếu đúng như vậy, hãy sử dụng tùy chọn `--format` của nó để nhận chính xác những gì bạn cần ở định dạng JSON.
Điểm:1
lá cờ br

Ví dụ

    - bộ_thực tế:
        x: "{{ _dict|from_yaml }}"
      lọ:
        _regex: '^(.*)\[(.*)\](.*)$'
        _key: "{{ thiết bị xuất chuẩn|regex_replace(_regex, '\1') }}"
        _val: "{{ thiết bị xuất chuẩn|regex_replace(_regex, '\2') }}"
        _dict: |
          {{ _Chìa khóa }}:
          {% cho tôi trong _val.split() %}
            {{ i|regex_replace(':', ': ') }}
          {% endfor %}

cho

  x:
    bản đồ:
      khóa1: giá trị1
      khóa2: giá trị2
      phím3: giá trị3

Nếu có nhiều dòng hơn, ví dụ:

    stdout_lines:
      - "map1[key1:value1 key2:value2 key3:value3]"
      - "map2[key1:value1 key2:value2 key3:value3]"
      - "map3[key1:value1 key2:value2 key3:value3]"

nó sẽ có thể phối hợp từ điển, v.d.

    - bộ_thực tế:
        x: "{{ x|d({})|combine(_dict|from_yaml) }}"
      vòng lặp: "{{ stdout_lines }}"
      lọ:
        _regex: '^(.*)\[(.*)\](.*)$'
        _key: "{{ item|regex_replace(_regex, '\1') }}"
        _val: "{{ item|regex_replace(_regex, '\2') }}"
        _dict: |
          {{ _Chìa khóa }}:
          {% cho tôi trong _val.split() %}
            {{ i|regex_replace(':', ': ') }}
          {% endfor %}

cho

  x:
    bản đồ1:
      khóa1: giá trị1
      khóa2: giá trị2
      phím3: giá trị3
    bản đồ2:
      khóa1: giá trị1
      khóa2: giá trị2
      phím3: giá trị3
    bản đồ3:
      khóa1: giá trị1
      khóa2: giá trị2
      phím3: giá trị3

Nếu các phím được lặp lại, ví dụ:

    stdout_lines:
      - "bản đồ[key1:value1 key2:value2 key3:value3]"
      - "bản đồ[key1:value1 key2:value2 key3:value3]"
      - "bản đồ[key1:value1 key2:value2 key3:value3]"

có thể nối một danh sách, ví dụ:

    - bộ_thực tế:
        x: "{{ x|d([]) + [_dict|from_yaml] }}"
      vòng lặp: "{{ stdout_lines }}"
      lọ:
        _regex: '^(.*)\[(.*)\](.*)$'
        _key: "{{ item|regex_replace(_regex, '\1') }}"
        _val: "{{ item|regex_replace(_regex, '\2') }}"
        _dict: |
          {{ _Chìa khóa }}:
          {% cho tôi trong _val.split() %}
            {{ i|regex_replace(':', ': ') }}
          {% endfor %}

cho

  x:
  - bản đồ:
      khóa1: giá trị1
      khóa2: giá trị2
      phím3: giá trị3
  - bản đồ:
      khóa1: giá trị1
      khóa2: giá trị2
      phím3: giá trị3
  - bản đồ:
      khóa1: giá trị1
      khóa2: giá trị2
      phím3: giá trị3

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.