การใช้ sed คุณจะพิมพ์อักขระ 'N' ตัวแรกของบรรทัดได้อย่างไร?


คำตอบ:


211

ไม่ใช้sedใช้cut:

grep .... | cut -c 1-N

หากคุณต้องใช้sed:

grep ... | sed -e 's/^\(.\{12\}\).*/\1/'

2
จริงๆแล้วในระบบ Cygwin ตอนนี้ฉันกำลังทำงานอยู่cutไม่ได้ตัดมันออกsedไป
kqw

หรือแม้แต่sed -r 's/^(.{12}).*/\1/'.
fedorqui 'SO หยุดทำร้าย'

1
-rเห็นได้ชัดว่า@fedorqui พร้อมใช้งานบน Linux แต่ไม่มีใน Mac
Paul Tomblin

แน่นอนว่าไม่มีใน OSX
fedorqui 'SO หยุดทำร้าย'

1
FYI: cut -c 1-N(ที่ N คือจำนวน) ไม่ทำงานในการติดตั้ง Cygwin ของฉันใน OS X ใช้ (Cygwin วี 2.6 ตัดวี 8.25..) sed -Eมากกว่าการsed -rใช้ที่อื่น
เขียน

45
colrm x

ตัวอย่างเช่นหากคุณต้องการ 100 อักขระแรก:

cat file |colrm 101 

เป็นเวลาหลายปีแล้วและอยู่ใน linux และ bsd ส่วนใหญ่ (freebsd แน่นอน) โดยปกติจะเป็นค่าเริ่มต้น apt-get install colrmผมจำไม่ได้ไม่ต้องพิมพ์


สิ่งนี้ไม่ได้ให้อักขระ 50n แรก มันให้อักขระ n สำหรับข้อความทุกบรรทัด
bsmoo

และcolrmเข้าใจ utf8.
Skippy le Grand Gourou



4

ในการพิมพ์อักขระ N ตัวแรกคุณสามารถลบอักขระ N + 1 ได้จนถึงท้ายบรรทัด:

$ sed 's/.//5g' <<< "defn-test"
defn

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.