จะคูณไฟล์ข้อมูล. txt ด้วยจำนวนคงที่ได้อย่างไร


9

ฉันมีไฟล์. txt หนึ่งคอลัมน์ มันเป็นตัวเลขประมาณ 8000 ฉันจะคูณคอลัมน์ข้อมูลนี้ด้วย 1000000 ได้อย่างไร


3
หากตัวเลขเป็นจำนวนเต็มอย่างเคร่งครัดให้sed 's/$/000000/' file.txt
glenn jackman

6
@glennjackman: ดูเหมือนคำตอบ : -]
David Foerster

เกิดอะไรขึ้นถ้าตัวเลขไม่ใช่จำนวนเต็ม?
copper.

คำตอบ:



16

หากตัวเลขในไฟล์เป็นจำนวนเต็มหรือค่าทศนิยมง่ายๆคุณสามารถใช้numfmtยูทิลิตี--from-unit=เพื่อระบุขนาดที่ต้องการ

อดีต รับ

$ cat file
1.23
5
3.45
17
6.78
23

แล้วก็

$ numfmt --from-unit=100000 < file
123000.00
500000
345000.00
1700000
678000.00
2300000

คุณสามารถเพิ่มความหลากหลายของprintfสไตล์การจัดรูปแบบไปยังเอาต์พุตเช่น

$ numfmt --from-unit=100000  --format="%'12.2f" < file
  123,000.00
  500,000.00
  345,000.00
1,700,000.00
  678,000.00
2,300,000.00

อีกทางเลือกด้วยsedและbc:

sed 's/$/ * 100000/' file | bc

หรือ (ตัวแปรขัดกลับด้าน)

sed 's/$/ 100000 * p/' file | dc

ควรที่จะbcอยู่ในคำสั่งสุดท้ายหรือเป็นdcอย่างอื่น?
PerlDuck

3
@PerlDuck dcเป็นอย่างอื่น - ดูตัวอย่างbc ต่างจาก dc อย่างไร?
ขับรถเหล็ก

ฮ่า ๆ ผมยังไม่ได้อ่านอย่างละเอียดเพียงพอและคิดว่าการขัดในขณะที่ทำให้สิ่งที่เป็นประกายเงางาม Ty สำหรับการอธิบาย
PerlDuck

3
ฮ่าดังนั้น "reverse polish" คือ "ทำบางสิ่งให้มันวาวน้อยลง (โคลนมากขึ้น)"? IMO, dc ตรงตามข้อกำหนดนั้น
เกล็นแจ็คแมน

ดูลิงค์นี้Wikipedia: Reverse Polish notation - สิ่งนี้กลายเป็นที่นิยมในปี 1970 ด้วย HP-35 เครื่องคิดเลขวิทยาศาสตร์แบบพกพาเครื่องแรกของโลกและเครื่องคิดเลขชุดต่อไปนี้
sudodus
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.