เกรป
กำลังค้นหาไฟล์ ssh_known_hosts
สำหรับบรรทัด (หรือบรรทัด) ที่ขึ้นต้นด้วย x06
(^
ระบุจุดเริ่มต้นของบรรทัดใน นิพจน์ทั่วไป) และแสดงผลออกมา
จาก ผู้ชาย ssh-keygen
:
ssh-keygen -l [-f input_keyfile]
[...]
-l แสดงลายนิ้วมือของไฟล์รหัสสาธารณะที่ระบุ คีย์ RSA1 ส่วนตัว
ได้รับการสนับสนุนด้วย สำหรับคีย์ RSA และ DSA ssh-keygen พยายาม
ค้นหาไฟล์คีย์สาธารณะที่ตรงกันและพิมพ์ลายนิ้วมือ ถ้า
เมื่อรวมกับ -v การแสดงอักษรศิลป์ ASCII ของคีย์คือ supâ
ด้วยลายนิ้วมือ
ดังนั้น ssh-keygen -l -f -
อ่านคีย์จากอินพุตมาตรฐาน (นั่นคือจากบรรทัดที่ส่งออกโดย เกรป
) และส่งออกลายนิ้วมือ (-
ใช้เป็นชื่อไฟล์หมายถึงอินพุตมาตรฐาน)
เดอะ เสด
ส่วนที่ยากที่สุด เราต้องเข้าใจ Regular Expression เป็นอย่างดีจึงจะเข้าใจว่ามันทำอะไร
เสด
รันคำสั่ง s/รูปแบบ/การแทนที่/
ในแต่ละบรรทัดของอินพุต นั่นคือแทนที่ ลวดลาย
กับ เปลี่ยน
และคัดลอกบรรทัดไปยังเอาต์พุตมาตรฐาน ถ้า ลวดลาย
ไม่พบในบรรทัด บรรทัดจะถูกคัดลอกไม่เปลี่ยนแปลง
เดอะ ลวดลาย
เสด
กำลังมองหาคือ: ^.*\(SHA256:\S\+\).*(\([^)]\+\))
. เป็นนิพจน์ทั่วไปแน่นอน
แยกย่อยได้ดังนี้
ต้นบรรทัด (^
) ตามด้วยอักขระใดก็ได้ตั้งแต่ศูนย์ขึ้นไป (.*
) ตามด้วยอันดับแรก กลุ่ม (ส่วนระหว่าง \( ... \)
; เราจะไปดูรายละเอียดในภายหลัง) ตามด้วยอักขระใด ๆ ที่เป็นศูนย์หรือมากกว่า (.*
) ตามด้วยวินาที กลุ่มซึ่งอยู่ในวงเล็บตามตัวอักษร (\( ... \))
.
กลุ่มแรกคือ SHA256:\S\+
. นี่หมายถึงสตริงตามตัวอักษร SHA256:
ตามด้วยอักขระที่ไม่ใช่ช่องว่างอย่างน้อยหนึ่งตัว (\S\+
) - อย่างไรก็ตาม ควรสังเกตว่าไม่ใช่ทั้งหมด เสด
การใช้งานจะสนับสนุน \S
เป็นการระบุอักขระที่ไม่ใช่ช่องว่าง ดังนั้นการแข่งขันของกลุ่มแรก SHA256:
ตามด้วยอักขระใด ๆ จนถึงช่องว่างแรก
กลุ่มที่สองคือ [^)]\+
นั่นคือ อักขระอย่างน้อยหนึ่งตัวที่ไม่เท่ากับวงเล็บปิด เมื่อพิจารณาว่าทั้งกลุ่มอยู่ในวงเล็บ กลุ่มที่สองจะจับคู่สตริงใดๆ ที่อยู่ในวงเล็บ จนถึงวงเล็บปิด
สรุป, เสด
ค้นหาในบรรทัดสำหรับรูปแบบที่ประกอบด้วย SHA256:
บวกกับอักขระที่ไม่ใช่ช่องว่าง และสตริงใดๆ ที่อยู่ในวงเล็บ โดยมีสิ่งใดอยู่ระหว่างอักขระเหล่านั้น
รูปแบบที่ตรงกันจะถูกแทนที่ด้วย \2: \1
ซึ่งเป็นข้อความที่ตรงกับกลุ่มที่สอง (\2
), ทวิภาค, เว้นวรรค และข้อความที่ตรงกับกลุ่มแรก (\1
).
ตัวอย่างเช่น ถ้า ssh-keygen
เอาต์พุตมีบรรทัดเช่น
เริ่มต้นบางอย่าง SHA256:123456 ตรงกลางบางอย่าง (ข้อความภายในวงเล็บ) สิ้นสุดบางอย่าง
เสด
จะแทนที่บรรทัดนั้นด้วย
ข้อความภายในวงเล็บ: SHA256:123456 จบบางสิ่ง
เส้นที่ไม่มีรูปแบบจะไม่เปลี่ยนแปลง