sed + ไม่ทำงานบน solaris


1

ฉันพยายามใช้sedสายกับ+เครื่อง Solaris และบนเครื่อง Linux

บน Solaris sed ไม่ได้ลบสตริงจนกว่าจำนวนแรกเช่นฉันต้องการ:

   solaris:/ ROOT > echo "Release............5.3.7.1-12"  | sed 's/[^0-9]\+//'

   Release............5.3.7.1-12

บน Linux ฉันได้รับผลลัพธ์ที่คาดหวัง:

  linux tmp]# echo "Linux Release............5.3.7.1-12"  | sed 's/[^0-9]\+//'

  5.3.7.1-12
  • ทำไมรูปแบบ sed นี้ไม่ทำงานบนโซลาริส?

  • ฉันต้องเปลี่ยนแปลงอะไรบ้างในไวยากรณ์เพื่อให้สามารถทำงานบน Solaris ได้

คำตอบ:


0

โดยปกติแล้วการหลีกเลี่ยง+อักขระ ( \+) จะส่งผลให้เกิดตัวอักษร+ไม่ใช่ตัวดัดแปลง นี่ไม่ใช่กรณีที่มีsedใน Ubuntu 10.04 แต่อาจไม่ได้อยู่บน Solaris

ฉันคาดเดาได้ดีที่สุดว่านี่เป็นการใช้งานเฉพาะดังนั้นsed 's/[^0-9]\+//'อาจใช้งานได้

คุณสามารถลองใช้sed -r 's/[^0-9]\+//'(ซึ่ง-rหมายถึงนิพจน์ทั่วไปแบบขยาย ) มันทำงานบน Ubuntu 10.04


1
ที่ดูเหมือนจะไม่ถูกต้อง - เป็นเพียงแค่ว่า solaris sed ไม่รองรับ '+' คำถามเดียวกันโดยผู้เขียนคนเดียวกันที่นี่ดูเหมือนจะมีข้อมูลเพิ่มเติม: serverfault.com/questions/348490/sed-not-work-on-solaris
Richlv
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.