การแก้ไขสตรีม CSV AWK รวมคอลัมน์ที่สามสำหรับคอลัมน์แรกเหมือนกันเมื่อคอลัมน์ที่สอง> = 0


0

ฉันใช้ Windows และเคยได้ยิน linuxes awk และอื่น ๆ เท่านั้นดังนั้นฉันจึงจินตนาการได้ว่านี่เป็นไปได้โดยไม่ต้องใช้สคริปต์จริง:

ฉันมีข้อมูลเช่น

..
162     42      A single serving
162     62      of french fries, please
164     -1      ABC
164     -1      1
..

ที่ฉันอยากจะกลายเป็น

..
A single serving of french fries, please
..

ดังนั้นกฎจะเป็น

รวมคอลัมน์ที่สามสำหรับคอลัมน์แรกที่เหมือนกันเมื่อคอลัมน์ที่สอง> = 0

ฉันจะพยายามหา awk สำหรับ Windows


นี่คือGNU awk สำหรับ Windows (ขึ้นอยู่กับการดาวน์โหลดเช่นกัน)
ไม่มี

gawk "$2 >= 0 { print $3 }" txt.txtให้สตริงที่ฉันต้องการ แต่ยังไม่ได้จัดกลุ่มตามคอลัมน์แรก ..
ไม่มี

คำตอบ:


0

ใช้อาร์เรย์เพื่อสร้างสตริง:

awk -F '\t' '
  $2 >= 0 {str[$1] = str[$1] $3 " "}
  END {for (s in str) print str[s]}
' filename

ฉันหวังว่าข้อมูลของคุณจะถูกคั่นด้วยแท็บเพราะมิฉะนั้น $ 3 == "A" สำหรับบรรทัดแรก


น่าอัศจรรย์ สิ่งนี้ใช้ได้กับ Windowsgawk -F "\t" "$2 >= 0 {str[$1] = str[$1] $3 \" \"} END {for (s in str) print str[s]} " %1
ไม่มี
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.