Điểm:0

tập lệnh shell: Cách tạo từ điển từ danh sách?

lá cờ cn
#!/usr/bin/env bash
b=$(awk -F "[|]" '{print $1}' test.txt)
days=$(awk -F "[{}]" '{print $1}' test.txt) #days
time=$(awk -F "[{}]" '{print $2}' test.txt) #time
#count=`echo $d | wc -l`
#echo $count
khai báo -A mảng
cho tôi sau $days;do
        tiếng vang $i
    cho j trong $time;
        tiếng vang $j
    xong
xong

kiểm tra.txt:

azureuser@disk-bkp:~$ cat test.txt
 Mo Tu We Th Fr {19:00 18:00 16:00 19:00 19:00}

Cái bên dưới là đầu ra từ đoạn mã trên:

mo
19:00
18:00
16:00
19:00
19:00
Tú
19:00
18:00
16:00
19:00
19:00
chúng tôi
19:00
18:00
16:00
19:00
19:00
Thứ tự
19:00
18:00
16:00
19:00
19:00
cha
19:00
18:00
16:00
19:00
19:00

đầu ra dự kiến ​​là:

mo
 19:00
Tú
18:00

chúng tôi
16:00
Thứ tự
19:00

cha
19:00

Tôi muốn tạo một cặp khóa/giá trị dựa trên danh sách trên và tôi cần lấy giá trị dựa vào Chìa khóa. $ngày đầu ra là Mo Tu We Th Frthời gian $19:00 23:00 16:00 23:00 15:00. Sản lượng Dự kiến ​​bây giờ là Thứ Hai:19:00 Thứ Tư:23:00 Thứ Ba:16:00 Thứ Ba:23:00 Thứ Sáu:15:00

bac0n avatar
lá cờ cn
Chỉnh sửa câu hỏi của bạn với thông tin bổ sung về cách tổ chức *text.txt*.
Điểm:0
lá cờ cn

Nếu bạn muốn sử dụng awk cho cài đặt của mảng khóa/giá trị, bạn cần thay đổi tệp đầu vào của mình thành:

Mỗ 19:00
T 18:00
Chúng tôi 16:00
T19:00
19:00 thứ sáu

sau đó

awk '{a[$1]=$2} END {for (i in a) print i, a[i]}' test.txt 

T 18:00
Chúng tôi 16:00
19:00 thứ sáu
Mỗ 19:00
T19:00

a[] là mảng khóa/giá trị bạn muốn. Nhưng như bạn có thể thấy thứ tự đã thay đổi bởi awk. Để ngăn chặn điều này, chúng tôi tiếp tục thay đổi tệp đầu vào của bạn thành:

1Tháng 19:00
2Tu 18:00
3We 16:00
Thứ 4 19:00
5Fr 19:00

để sau này chúng ta có thể khôi phục thứ tự bằng cách sử dụng cột đầu tiên. sau đó

awk '{a[$1]=$2} END {for (i in a) print i, a[i]}' test.txt | sắp xếp -k1 | cắt -c 2- | tr'\n' ' '

Cung cấp đầu ra mà bạn muốn:

Mo 19:00 Tu 18:00 We 16:00 Th 19:00 T 6 19:00

Nhưng hãy lưu ý rằng các khóa trong mảng a[] hiện chứa cột bổ sung mà bạn có thể không muốn.

hariraj avatar
lá cờ cn
Xin chào ông Elm, thực ra tôi đang thêm đầu ra của **tag=`curl -s -H Metadata:true --noproxy "*" "http://169.254.169.254/metadata/instance/compute/tagsList?api-version =2019-06-04"| jq -r '.[]|select(.name == "auto_stop").value' | cắt -d '' -f1 | sed 's/[][]//g' ` vào test.txt
hariraj avatar
lá cờ cn
vì vậy từ tệp test.txt chứa **Mo Tu We Th Fr {19:00 18:00 16:00 19:00 19:00}**

Đă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.