Score:0

แยกค่าที่มากกว่าเกณฑ์ในไฟล์ข้อความหรือไม่

ธง in

ฉันมีไฟล์ข้อความข้อมูลดังนี้:

ข้อมูล=

อาห์ -0.0006 0.0001 0.0147 100.0 100.0
อาห์ -0.0006 0.0006 0.0133 100.0 100.0
bcmd -0.0016 0.0010 0.0168 100.0 100.0
bcmd -0.1012 0.0010 0.0184 100.0 100.0
bcmd 0.2011 0.0024 0.0126 100.0 100.0
.
.
.

ฉันต้องการแยกบรรทัดที่มากกว่า 0.10 และ -0.10 สำหรับ 2, 3 และ 4 คอลัมน์ สำหรับตัวอย่างข้างต้น คอลัมน์ 2, 3 และ 4 ในสองบรรทัดสุดท้ายมีค่ามากกว่า 0.10 และ -0.10 จากนั้น ไฟล์เอาต์พุตควรเป็น:

เอาท์พุท:

bcmd -0.1012 0.0010 0.0184 100.0 100.0
bcmd 0.2011 0.0024 0.0126 100.0 100.0
elmclose avatar
cn flag
awk 'sqrt($2*$2)>=.1 || sqrt($3*$3)>=.1 || sqrt($4*$4)>=.1 {print}' file.txt แทนที่ file.txt ด้วยไฟล์ข้อมูลของคุณ
deepblue avatar
in flag
เรียน @elmclose หากคุณตอบคำถามนี้ได้ ฉันจะยอมรับ โซลูชันของคุณทำงานได้ดี ขอบคุณมาก.
Score:1
ธง cn

ใน อึดอัดการดำเนินการเริ่มต้นเมื่อนิพจน์ประเมินค่าเป็นจริงคือการพิมพ์บรรทัดปัจจุบัน เนื่องจากคุณต้องตรวจสอบค่าสัมบูรณ์ของตัวเลข โดยไม่สนใจเครื่องหมาย ซึ่งเป็นเคล็ดลับง่าย ๆ (ผู้ใช้กล่าวถึง ปิด ใน ความคิดเห็น) คือการตรวจสอบว่ารากที่สองของตัวคูณเอง (ซึ่งจะส่งกลับตัวเลขเป็นจำนวนเต็มบวก) มากกว่าเกณฑ์ ดังนั้นคุณสามารถทำได้:

$awk 'sqrt($2*$2)>=.1 || sqrt($3*$3)>=.1 || sqrt($4*$4)>=.1' ไฟล์
bcmd -0.1012 0.0010 0.0184 100.0 100.0
bcmd 0.2011 0.0024 0.0126 100.0 100.0
Score:0
ธง cn

คุณยังสามารถใช้ฟังก์ชันภายใน awk เพื่อตรวจสอบความถูกต้องของช่วง

awk 'ฟังก์ชั่น fg(v) {กลับ v<=-.1 || v>=.1 ? 1 : 0} (fg($2)+fg($3)+fg($4)){print}' mkl.txt 

หรือมากกว่านั้น:

awk 'ฟังก์ชั่น fg(v) {กลับ v<=-.1 || v>=.1 ? 1 : 0} fg($2)+fg($3)+fg($4)' mkl.txt 

คุณสามารถกำหนดขีดจำกัดของช่วงได้โดยแก้ไข .1 และ -.1

โพสต์คำตอบ

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