Score:0

คำสั่ง Bash sort การเรียงลำดับตัวเลข ฟิลด์ และการเรียงลำดับพจนานุกรม

ธง dk

คุณสามารถอธิบาย เรียงลำดับ +0nr -2 +2d โปรด? ตัวอย่างนี้มาจาก https://www.grymoire.com/Unix/Awk.html ความคิดเห็นกล่าวว่า:

# การเรียงลำดับตัวเลข - ตัวเลขที่ใหญ่ที่สุดก่อน
# ฟิลด์การเรียงลำดับ 0 และ 1 ก่อน (การเรียงลำดับเริ่มต้นด้วย 0)
# ตามด้วยการเรียงลำดับพจนานุกรมในช่อง 2 + 3

โปรดอธิบายทุกอาร์กิวเมนต์ที่ใช้

ขอบคุณ!

hr flag
AFAIK ที่ไวยากรณ์ล้าสมัย - ดูตัวอย่าง [ข้อผิดพลาด âsort: ไม่สามารถอ่าน: +1: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าวâ](https://unix.stackexchange.com/a/486729/65304)
Logan Lee avatar
dk flag
@steeldriver ใช่ แต่คุณช่วยอธิบายได้ไหมว่ามันหมายถึงอะไร
waltinator avatar
it flag
อ่าน `man sort` และ `info sort`
Score:1
ธง hr

นี่เป็นไวยากรณ์ "ดั้งเดิม" ที่ล้าสมัย (หรืออย่างน้อยล้าสมัย) สำหรับการระบุค่าฟิลด์และคอลัมน์ ซึ่งบันทึกไว้ใน จัดเรียงข้อมูล:

   ในระบบที่ไม่เป็นไปตาม POSIX 1003.1-2001 âsortâ รองรับ
ไวยากรณ์เริ่มต้นศูนย์แบบดั้งเดิม â+POS1 [-POS2]â สำหรับการระบุคีย์การเรียงลำดับ
คำสั่งดั้งเดิม âsort +A.X -B.Yâ เทียบเท่ากับ âsort -k
A+1.X+1,Bâ ถ้า Y คือ â0â หรือขาดหายไป มิฉะนั้นจะเทียบเท่ากับ âsort -k
A+1.X+1,B+1.Yâ

ในตัวอย่างที่คุณอ้าง:

เรียงลำดับ +0nr -2 +2d

มีตัวระบุสองชุด: "+0 -2" และ "-2". ครั้งแรกมี เอ=0, ข=2, วาย ขาดและด้วยเหตุนี้จึงเท่ากับ -k0+1,2 เช่น. -k1,2 ในการจัดทำดัชนีแบบ 1 สมัยใหม่ ที่สองมี เอ=2 กับทั้งคู่ และ วาย ขาดจึงกลายเป็นเพียง -k3.

ตัวเลือกตัวอักษรมีความหมายตามปกติเช่น

   -d, --dictionary-คำสั่ง
          พิจารณาเฉพาะช่องว่างและอักขระที่เป็นตัวอักษรและตัวเลขคละกัน

   -n, --การเรียงลำดับตัวเลข
          เปรียบเทียบตามค่าตัวเลขสตริง

   -r, --ย้อนกลับ
          กลับผลการเปรียบเทียบ

ดังนั้นผลลัพธ์จึงเป็นการเรียงลำดับตัวเลขแบบย้อนกลับในสองฟิลด์แรก -k1,2nr ตามด้วยการจัดเรียงพจนานุกรมในฟิลด์ที่สาม (และถัดไป) -k3d.

เดอะ ข้อมูล หน้าไม่แนะนำให้ใช้ไวยากรณ์รูปแบบนี้:

   สคริปต์ที่มีไว้สำหรับใช้กับโฮสต์มาตรฐานควรหลีกเลี่ยงแบบดั้งเดิม
ไวยากรณ์และควรใช้ â-kâ แทน ตัวอย่างเช่น หลีกเลี่ยง âsort +2â เนื่องจาก
อาจตีความได้ว่า âsort ./+2â หรือ âsort -k 3â ถ้าคุณ
สคริปต์ต้องทำงานบนโฮสต์ที่รองรับเฉพาะไวยากรณ์ดั้งเดิมเท่านั้น
สามารถใช้การทดสอบเช่น âif sort -k 1 </dev/null >/dev/null 2>&1; แล้ว
...â เพื่อตัดสินใจว่าจะใช้ไวยากรณ์ใด
Score:-1
ธง dk

มันเหมือนกับ เรียงลำดับ -k1,2nr -k3d.

โพสต์คำตอบ

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