Score:2

การกรองเนื้อหาของคำสั่งด้วย grep

ธง kn

ฉันพยายามกรองผลลัพธ์ของ ssh-keyscan เป้าหมายของสิ่งนี้คือการกรองผลลัพธ์ ดังนั้นฉันจึงสามารถใช้มันในรหัสหลามของฉันเพื่อระบุโฮสต์ที่เชื่อมต่อกับ VPN ของฉัน โดยปกติฉันจะใช้ grep เพื่อกรอง grep อันหนึ่งของฉันกรองได้ถูกต้อง แต่อีกอันไม่ใช่grep ตัวแรกกำลังทำงานเพื่อรับเพียง ed25519 ID แต่ไม่แน่ใจว่าเหตุใดฉันจึงได้รับบรรทัด SSH-2.0... ด้วย คำสั่งที่ฉันรันพร้อมกับเอาต์พุตอยู่ด้านล่าง:

user@host# ssh-keyscan 10.xx.xx.xx | grep ed25519 | grep -v "#"
  # 10.xx.xx.xx:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.3
  # 10.xx.xx.xx:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.3
  # 10.xx.xx.xx:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.3
  # 10.xx.xx.xx:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.3
  # 10.xx.xx.xx:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.3
  10.xx.xx.xx ssh-ed25519 <รหัสโฮสต์>

ฉันต้องการให้พิมพ์เฉพาะบรรทัด ed25519 ฉันได้ลองใช้ AWK เพื่อกรอง แต่ก็ยังไม่ได้ผลลัพธ์ที่ต้องการ

มีความคิดอย่างไรที่จะกรองเฉพาะบรรทัด ed25519

hr flag
บรรทัด `#` มีแนวโน้มที่จะเป็น stderr ไม่ใช่ stdout - ลอง `ssh-keyscan 10.xx.xx.xx 2>&1 | grep ed25519 | grep -v "#"`
Tim R avatar
kn flag
คุณพูดถูกอย่างแน่นอน หากคุณต้องการใช้เป็นคำตอบเพื่อที่ฉันจะได้ให้เครดิตแก่คุณเพื่อเป็นวิธีแก้ปัญหา ขอบคุณมาก. ไม่ต้องการ grep ที่สองเนื่องจาก 2>&1 แก้ไขแล้ว
hr flag
ตกลงเสร็จแล้ว - ฉันได้ให้คำแนะนำเพื่อกำจัด grep (s)
Score:3
ธง hr

เส้นที่ขึ้นต้นด้วย # กำลังจะ stderr (ข้อผิดพลาดมาตรฐาน) แทนที่จะเป็นเอาต์พุตมาตรฐาน (stdout) ที่จะได้รับ grep -v หากต้องการยกเว้น คุณต้องเปลี่ยนเส้นทาง stderr ไปที่ stdout:

ssh-keyscan 10.xx.xx.xx 2>&1 | grep ed25519 | grep -v "#"

โปรดทราบว่าคุณสามารถกำจัด grep ตัวแรกได้โดยเพิ่มตัวกรองประเภทในคำสั่ง ssh-keyscan:

ssh-keyscan -t ed25519 10.xx.xx.xx 2>&1 | grep -v "#"

หากต้องการ คุณสามารถเปลี่ยนเส้นทางข้อผิดพลาดทั้งหมดเป็น null แทนการกรอง:

ssh-keyscan -t ed25519 10.xx.xx.xx 2>/dev/null
Score:0
ธง us

ถ้าคุณรู้ว่าผลลัพธ์จะรวม "ssh-ed25519" คุณควร grep ด้วย

หรือท่อไปนั้น.

หรือถ้าคุณรู้ว่ามันจะเป็นบรรทัดสุดท้ายของเอาต์พุต ให้ไพพ์ไปยังคำสั่ง "tail" ที่เหมาะสม

คุณดูคำสั่ง sed แล้วหรือยัง

in flag
ยินดีต้อนรับสู่ AskUbuntu เมื่อแนะนำบุคคลให้ทำ A หรือ B เพื่อแก้ไขปัญหา โดยปกติแล้วการใส่ตัวอย่างวิธีแก้ปัญหาจะเป็นประโยชน์ โชคดีที่สิ่งเหล่านี้มีคำตอบที่ยอมรับแล้ว

โพสต์คำตอบ

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