นี่คือวิธีหนึ่งในการแก้ปัญหานี้:
- เพิ่มคอลัมน์ที่สองโดยแปลงเวลาเป็นหน่วยเดียวกัน
- เรียงลำดับอินพุตในคอลัมน์ที่สอง
- วางคอลัมน์ที่สอง
คุณสามารถทำขั้นตอนที่ 1 ด้วยสคริปต์ awk สคริปต์นี้จะแปลงหน่วยเวลาเป็นนาโนวินาที:
{
time = $1;
sub(/[a-z]+$/, "", time);
unit = $1;
sub(/^[^a-z]+/, "", unit);
# convert to nanoseconds
if (unit == "us") {
time *= 1000;
} else if (unit == "ms") {
time *= 1000000;
} else if (unit == "s") {
time *= 1000000000;
}
print $1, time
}
หากคุณบันทึกไว้ในไฟล์ convert.awkจากนั้นคุณสามารถทำตามขั้นตอนที่ 1-3 ด้วยขั้นตอนนี้:
awk -f convert.awk input.txt | sort -g -k2 | cut -f1 -d' '
-g แทน -n มีความจำเป็นในกรณีที่ตัวเลขบางตัวแสดงในรูปแบบเลขชี้กำลัง (ให้เครดิตกับ OP เพื่อชี้ว่า)
sort -hหรืออาจเป็น 1 ข้อบกพร่องและข้อ จำกัด การออกแบบที่ไม่สามารถแก้ไขได้ 1 รายการ 1)usหรือµsจัดการไม่ถูกต้อง (ข้อผิดพลาด) 2)sไม่ได้รับการจัดการอย่างเหมาะสม (ข้อ จำกัด ในการออกแบบที่เป็นไปได้) ถ้าคุณแปลงsไปยังหน่วยอื่นที่ทำงานอย่างถูกต้อง (m,k,M)sort -hทำให้ถูกต้อง ลองด้วยmg/kg/Mgค่า!)