Score:0

เชลล์สคริปต์: จะสร้างพจนานุกรมจากรายการได้อย่างไร

ธง cn
#!/usr/bin/env ทุบตี
b=$(awk -F "[|]" '{พิมพ์ $1}' test.txt)
วัน=$(awk -F "[{}]" '{พิมพ์ $1}' test.txt) #วัน
time=$(awk -F "[{}]" '{print $2}' test.txt) #time
#count=`echo $d | wc -l`
#echo $นับ
ประกาศ -A arr
สำหรับฉันใน $days;do
        เสียงสะท้อน $i
    สำหรับ j ใน $time;
        เสียงสะท้อน $j
    เสร็จแล้ว
เสร็จแล้ว

ทดสอบ. txt:

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

ด้านล่างเป็นผลลัพธ์จากโค้ดด้านบน:

โม
19:00 น
18:00 น
16:00 น
19:00 น
19:00 น
อ
19:00 น
18:00 น
16:00 น
19:00 น
19:00 น
เรา
19:00 น
18:00 น
16:00 น
19:00 น
19:00 น
ไทย
19:00 น
18:00 น
16:00 น
19:00 น
19:00 น
คุณพ่อ
19:00 น
18:00 น
16:00 น
19:00 น
19:00 น

ผลลัพธ์ที่คาดหวังคือ:

โม
 19:00 น
อ
18:00 น

เรา
16:00 น
ไทย
19:00 น

คุณพ่อ
19:00 น

ฉันต้องการสร้างคู่คีย์/ค่าตามรายการด้านบน และฉันต้องได้รับ ค่า ขึ้นอยู่กับ กุญแจ. $ วัน ผลลัพธ์คือ Mo Tu We Th Fr และ เวลา $ เป็น 19:00 23:00 16:00 23:00 15:00. ผลลัพธ์ที่คาดหวังคือ มอ:19:00 พฤ:23:00 เรา:16:00 Th:23:00 Fr:15:00 น.

bac0n avatar
cn flag
แก้ไขคำถามของคุณด้วยข้อมูลเพิ่มเติมเกี่ยวกับวิธีจัดระเบียบ *text.txt*
Score:0
ธง cn

หากคุณต้องการใช้ awk สำหรับการตั้งค่าอาร์เรย์คีย์/ค่า คุณต้องเปลี่ยนไฟล์อินพุตของคุณเป็น:

มอ 19:00 น
พฤ. 18:00 น
เรา 16:00 น
พฤ. 19:00 น
พฤ 19:00 น

แล้ว

awk '{a[$1]=$2} END {สำหรับ (i ใน a) พิมพ์ i, a[i]}' test.txt 

พฤ. 18:00 น
เรา 16:00 น
พฤ 19:00 น
มอ 19:00 น
พฤ. 19:00 น

a[] คืออาร์เรย์คีย์/ค่าที่คุณต้องการ แต่อย่างที่คุณเห็นคำสั่งมีการเปลี่ยนแปลงโดย awk เพื่อป้องกันสิ่งนี้ เราเปลี่ยนไฟล์อินพุตของคุณเพิ่มเติมเป็น:

1 ม.ค. 19:00 น
2พฤ. 18:00 น
3 เรา 16:00 น
4 ธ. 19:00 น
5Fr 19:00 น

เพื่อให้เราสามารถเรียกคืนคำสั่งโดยใช้คอลัมน์แรกได้ในภายหลัง แล้ว

awk '{a[$1]=$2} END {สำหรับ (i ใน a) พิมพ์ i, a[i]}' test.txt | จัดเรียง -k1 | ตัด -c 2- | ตร '\n' ' '

ซึ่งให้ผลลัพธ์ที่คุณต้องการ:

มอ 19:00 น. พฤ 18:00 น. เรา 16:00 น. 19:00 น. ศ. 19:00 น.

แต่โปรดทราบว่าตอนนี้คีย์ในอาร์เรย์ a[] มีคอลัมน์เพิ่มเติมซึ่งคุณอาจไม่ต้องการ

hariraj avatar
cn flag
สวัสดีคุณ Elm จริง ๆ แล้วฉันกำลังต่อท้ายผลลัพธ์ของ **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' | ตัด -d '' -f1 | sed 's/[][]//g' ` ไปยัง test.txt
hariraj avatar
cn flag
ดังนั้นจากไฟล์ test.txt จะมี **Mo Tu We Th Fr {19:00 18:00 16:00 19:00 19:00}**

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา