Score:0

จะรวมคำสั่ง grep และคำสั่ง sed ในไฟล์ข้อความเดียวกันและส่งออกไปยังไฟล์อื่นได้อย่างไร

ธง mx

ฉันคัดลอกบันทึกต่อไปนี้จากโปรแกรมสำรวจบันทึกกราฟานา

2021-06-12 21:59:41 
2021-06-12 20:59:41.118 ข้อมูล 1 --- [edElastic-14048] c.o.i.i.s.i.UserManagementServiceImpl : BUNDLE_PURCHASE_FAILED || 213550040214 | ไม่สามารถทำการซื้อบันเดิลอย่างง่ายสำหรับธุรกรรม 5001235315807102834 เกิดข้อผิดพลาดในการถอดรหัส JSON: ไม่สามารถยกเลิกการซีเรียลไลซ์ค่าประเภท

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

2021-06-12 21:59:41  213550040214 

ฉันใช้คำสั่งด้านล่างเพื่อรับผลลัพธ์ที่ฉันคาดไว้:

grep -Eo "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0 -9]{2}" bfailed.txt | grep -Eo "[0-9]{12}" | sed '/[a-zA-Z]/d' > b.txt

แต่คำสั่งนี้ไม่ให้ผลลัพธ์ใด ๆ ฉันจะรับผลลัพธ์ที่คาดหวังได้อย่างไร

cn flag
คุณควรตรวจสอบ grep man page เพื่อดูว่า `-o` ทำหน้าที่อะไร
cn flag
กุญแจสำคัญในการดีบักไปป์ไลน์คือการเรียกใช้คำสั่งแรกและตรวจสอบเอาต์พุต จากนั้นจึงเพิ่มคำสั่งถัดไปในไปป์ไลน์ เป็นต้น
Score:2
ธง cn

คำสั่งของคุณไม่ให้ผลลัพธ์เนื่องจากคำสั่งที่สอง เกรป คำสั่งไม่ตรงกับอะไร:

grep -Eo "[0-9]{12}" 

ที่มองหาเลข 12 ตัวติดกันเป๊ะๆ แต่คุณไม่เคยมีเลข 12 ตัวติดกันเลย เพราะตัวแรกของคุณ เกรป พิมพ์วันที่และเวลาเท่านั้น ดังนั้นบรรทัดที่เหลือจึงหายไปแล้ว

หากอินพุตของคุณเป็นเพียงสองบรรทัดที่คุณแสดงจริงๆ สิ่งที่คุณต้องทำก็คือพิมพ์ฟิลด์ที่ 1, 2 และ 11 ในบรรทัดที่มีอย่างน้อย 11 ฟิลด์:

$ awk 'NF>10{print $1,$2,$11}' ไฟล์
2021-06-12 20:59:41.118 213550040214

หากคุณมีบรรทัดเพิ่มเติมและต้องการให้ตรงกับรูปแบบวันที่และเวลาที่ระบุจริงๆ คุณสามารถลองทำสิ่งนี้แทน:

$ sed -En 's/([0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2 }:[0-9]{2}).*([0-9]{12}) .*/\1 \2/p' ไฟล์ 
2021-06-12 20:59:41 213550040214

เดอะ -E เปิดใช้งานนิพจน์ทั่วไปแบบขยายซึ่งลดความซับซ้อนของไวยากรณ์ที่นี่และ -น บอก เสด ไม่ให้พิมพ์อะไรโดยปริยาย จากนั้น ตัวดำเนินการแทน (s/เก่า/ใหม่/) จะพยายามจับคู่รูปแบบที่คุณกำลังมองหาและจับภาพ (รูปแบบ "การจับภาพ" ในวงเล็บ) เพื่อให้เราสามารถแทนที่ทุกอย่างด้วยส่วนที่ตรงกันเพียงสองส่วน (\1 \2).

โปรดทราบว่าสิ่งนี้จะพบ ล่าสุด ยืด 12 หมายเลข ดังนั้นจะล้มเหลวหากคุณมีชุดดังกล่าวมากกว่าหนึ่งชุด เราสามารถให้วิธีแก้ปัญหาที่เจาะจงมากขึ้นแก่คุณได้ แต่คุณจะต้องให้รายละเอียดเพิ่มเติมเกี่ยวกับไฟล์ของคุณ อะไรคือตัวแปร และอะไรที่ไม่เคยเปลี่ยนแปลง

Mihiran Chathuranga avatar
mx flag
สิ่งนี้ใช้งานได้จริง ๆ แล้วฉันใช้ grafana log explorer แต่ฉันเขียนข้อความค้นหา Loki ที่ซับซ้อนไม่ได้ นั่นเป็นเหตุผลที่ฉันคัดลอกบันทึกไปยังไฟล์ข้อความและทำเช่นนี้ คุณมีความคิดใด ๆ เกี่ยวกับข้อความค้นหา Loki หรือไม่
terdon avatar
cn flag
@มิหิรัญชาตุรังคะ ฉันไม่รู้ว่าโลกิเป็นอะไร แต่นั่นเป็นเหตุผลที่คุณต้องให้บริบทในคำถามของคุณ

โพสต์คำตอบ

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